1
クレーム対応アプリケーションの作成とクレーム対応アプリケーションの作成と
展開展開
~ クラウド 編~ クラウド 編
いままでの知識を総動員
1. Windows Azure の準備
2. Windows Azure 用アプリケーションの作成
3. Windows Azure に展開
4. AD FS 2.0 に登録
2
クレーム対応アプリケーションの作成と展開~ クラウド 編
WINDOWS AZURE の準備
1. サービスの新規作成
2. 自己署名証明書の準備
3. 証明書の登録
3
サービスの新規作成~
サービスの新規作成
4
サービスの新規作成 ~
作成するサービスの選択
今回は「 Hosted Services 」を選択
5
サービスの新規作成 ~
Service Label を指定
サービスの識別名です。わかりやすい名前にしましょう。
6
サービスの新規作成 ~
公開 URL とデータセンターを指定
http:// .cloudapp.net/■ ■ ■ ■ ■ ■
7
サービスの新規作成 ~
サービスの初期状態
8
自己署名証明書の準備 ~
Windows Azure で使用する証明書とは
• サブスクリプション証明書( .cer )
– サービス管理 API ( SMAPI )へのアクセスに使用
– X.509 V3 ( .CER )に対応し、最低 2048 bit キー を持っている
• サービス証明書( .pfx )
– サービスへの SSL 通信に使用
– thumbprint によってアプリケーションと対応付け
参考
http://blogs.technet.com/b/junichia/archive/2010/09/02/3353275.aspx
いずれも自己署名証明書を利用可能
9
Hosted ServiceHosted Service Storage AccountStorage Account
TenantTenant
Subscription
(参考) Windows Azure へのアクセス経路
Windows
LiveID
Service Management Portal
Service Management API(SMAPI)
Admin
Storage Node
Compute Node
Controller Controller
Role Instance
LoadBalancer
End User
blob table queue
• Upload Application
• Manage
証
明
書
SAK
Drives
FabricFabric
10
(参考) SSL 通信と証明書管理
SMAPI
FabricFabric
Storage NodeCompute Node
Controller Controller
SAK
GuestGuest
Hypervisor
発行
RESTREST
SSL
格納
RootRoot
GA FA FA
PKCS12PKCS12
Microsoft CA
SSL
発行
内部通信に使用される
外部ー FC との通信に使用
SSL
11
自己署名証明書の準備~
[FAQ] 証明書の主体について
Windows Azure 上に展開されるアプリケーションの
FQDN …は
xxxxxxxx.cloudapp.net
…マイクロソフト所有のドメイン
…ということは
xxxxxxxx.cloudapp.net で
証明書を取得することはできない
CNAME を使用して証明書を取得する必要がある
※ 今回は自己署名証明書を使用します
http://blogs.technet.com/b/junichia/archive/2010/09/03/3353536.aspx
12
自己署名証明書の準備 ~
証明書の登録場所
サブスクリプション
サービス
tf.cloudapp.net
サービス
tf.cloudapp.net
サブスクリプション
証明書( .cer )
サービス証明書
( .pfx )
サービス
xxxx.cloudapp.net
サービス
xxxx.cloudapp.net
サービス
yyyy.cloudapp.net
サービス
yyyy.cloudapp.net
アカウントアカウント import
import
13
自己署名証明書の準備~
自己署名証明書の作成
1. Visual Studio をインストールしたマシンにログオン
2. [ スタート ]-[ すべてのプログラム ]-[Microsoft Visual Studio 2010]-[Visual Studio
Tools]-[Visual Studio コマンドプロンプト ] を起動
3. 証明書( .cer )ファイルとプライベートキーファイル( .pvk )ファイルを作成
4. .pvk と .cer から .pfx ファイルを作成する
5. .cer と .pfx ファイルを Windows Azure にインポートする
pvk2pfx -pvk "sydneytest.cloudapp.net.pvk“
-spc “tf01.cloudapp.net.cer“
-pfx “tf01.cloudapp.net.pfx“
-pi < パスワード >
makecert -r -pe -n "CN=tf01.cloudapp.net"
-sky exchange “tf01.cloudapp.net.cer"
-sv “tf01.cloudapp.net.pvk"
14
証明書の登録~
サブスクリプション証明書の登録( .cer )
15
証明書の登録~
サービス証明書の登録( .pfx )
16
クレーム対応アプリケーションの作成と展開~ クラウド 編
WINDOWS AZURE 用アプリケーションの作
成
17
アプリケーションの開発 ~
テンプレートの選択
18
アプリケーションの開発 ~
ロールの指定
ワーカーロールと Web ロールの違いについての詳細は以下を参照
Windows Azure Platform の概要
http://technet.microsoft.com/ja-jp/cloud/gg236628.aspx
19
アプリケーションの開発 ~
Windows Identity Foundation への参照追加
.NET から Microsoft.IdentityModel を追加する
20
アプリケーションの開発 ~
Microsoft.IdentityModel モジュールの複製設定
Windows Azure で用意されている Windows Server には WIF がインストールされてい
ない。
そこで、 Microsoft.IdentityModel を Azure 上でも使用できるよう、パッケージの中に組
み込んでおく必要がある。
パッケージ
Microsoft.IdentityModelMicrosoft.IdentityModel
一緒にアップロード一緒にアップロード
21
アプリケーションの開発 ~
SSL の設定 ①
SSL を使用する場合には、サービス証明書へのポインター( Thumprint )を設
定しておく必要がある
thumbprintthumbprint
22
アプリケーションの開発 ~
SSL の設定 ②
23
アプリケーションの開発 ~
SSL の設定 ③
識別名なので
何でもよい
識別名なので
何でもよい
サービス証明
書の
Thumbprint
サービス証明
書の
Thumbprint
証明書の識別名証明書の識別名
このままこのまま
24
アプリケーションの開発~
STS 参照の追加 ①
自分自身の公開後の
URL を指定する
25
アプリケーションの開発~
STS 参照の追加 ②
オンプレミスの場合
と同じ
26
アプリケーションの開発~
STS 参照の追加 ③
27
アプリケーションの開発~
Web.config の編集 ①
サービス証明書の Thumbprint を追記する
<serviceCertificate>
<certificateReference x509FindType="FindByThumbprint" findValue=“<THUMBPRINT>"/>
</serviceCertificate>
28
アプリケーションの開発~
Web.config の編集 ②
<configuration><system.web> に以下を追記
•<customErrors mode= off” />“
•<httpRuntime requestValidiationMode= 2.0” />“
29
アプリケーションの開発~
ちょっとだけコーディング(?)①
今回は、オンプレミスに展開したアプリケーションのコードを流用
• Default.aspx のソースの修正
<%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs”
Inherits=“WebRole1._Default” validateRequest="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
(略)
</html>
<%@ Page Language=“C#” AutoEventWireup=“true” CodeBehind=“Default.aspx.cs”
Inherits=“WebRole1._Default” validateRequest="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
(略)
</html>
Claims-Aware ASP.NET テンプレートで提供されている Default.aspx のコード部を、作成中
の Default.aspx に上書きでコピペして、以下の通り修正
ちょっとだけ修
正
ちょっとだけ修
正
30
アプリケーションの開発~
ちょっとだけコーディング(?)②
• Default.aspx.cs のソースを「注意しながら」修正
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
(略)
}
}
using Microsoft.IdentityModel.Claims;
namespace WebRole1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
using Microsoft.IdentityModel.Claims;
namespace WebRole1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
挿
入
追記
Claims-Aware ASP.NET テ
ンプレートのソース
Claims-Aware ASP.NET テ
ンプレートのソース
31
アプリケーションの発行方法
直接発行直接発行
2 通りの発行方法
•Visual Studio から直接発行する
•パッケージファイルを保存して、ポータルサイトからアップする
.cspkg .cscfg
Windows Azure Portal
サ
ー
ビ
ス
パ
ッ
ケ
ー
ジ
を
作
成
サ
ー
ビ
ス
パ
ッ
ケ
ー
ジ
を
作
成
アップロー
ド
アップロー
ド
deploydeploy
ここまでは
開発者の仕事
展開するのは
ITPRO の仕
事
今回はこちらの
方法を使用する
今回はこちらの
方法を使用する
32
アプリケーションの開発~
サービスパッケージを作成
IIS への発行とは少し異なります
インフラ担当者は、今後パッケージの展
開を依頼されることがあるはずです
その場合にはこの方法を使用します。
33
アプリケーションの開発~
サービスパッケージをアップロード
.cspkg を指
定
.cspkg を指
定
.cscfg を指定.cscfg を指定
34
Deploy が完了するまで 15 分~ 20 分
約
15 分
後
約
15 分
後
35
約
5 分
後
約
5 分
後
36
メタデータへの接続を確認
https://tf01.cloudapp.net/FederationMetadata/2007-06/FederationMetadata.xml
アップロードが完了してステータスが「 Ready 」になったら、以下に接続して
表示されることを確認してみましょう。
37
AD FS 2.0 への登録 ①
今度は Windows Azure に展開したアプリケー
ションを、 AD FS 2.0 に登録します。
前ページのメタ
データ
の URL を指定する
前ページのメタ
データ
の URL を指定する
38
AD FS 2.0 への登録 ②
見分けがつきやす
い表示名を指定す
る
見分けがつきやす
い表示名を指定す
る
39
AD FS 2.0 への登録 ③
40
実行テスト
https://tf01.cloudapp.net/
41
WIF アプリケーションと SSO の仕組み
オンプレミ
ス
クラウド
AD DS AD FS 2.0
信
頼
信
頼
1
2
3
4
クラウド上に Identity 情報を用意せずに、
クレームによるアクセス承認が可能
WIF
5
6
7
8
WIF : Windows Identity Foundation
42
WS-Federation (Passive SSO) の流れ
1. オンプレミスの AD DS にログオン依頼
2. AD DS からクレデンシャルが送信されクライアントに保存
------------
3. Windows Azure 上のアプリケーションにアクセス
4. クレーム ポリシーをアプリケーションから受け取り、
STS (AD FS 2.0) にリダイレクト
5. 属性ストアである AD DS からクレームを収集
6. 集めたクレームに署名をしてセキュリティトークンを生成
し、 Windows Azure アプリケーションに送信
7. アプリケーションはセキュリティトークンを受け取
り、 Windows Identity Foundation (WIF) を使用してクレームを
取り出し、評価する
8. 画面がブラウザーに送られる

4/5 ADFS 2.0 を使用して Windows Azure との SSO を実現しよう V1.1