KEMBAR78
Azure ADと外部アプリのID連携/SSO - Deep Dive | PDF
Azure ADと外部アプリの
ID連携/SSO - Deep Dive
MVP for Enterprise Mobility
Naohiro Fujie / @phr_eidentity / http://idmlab.eidentity.jp
1
自己紹介
• Blog
• IdM実験室(Identityに関することを徒然と):http://idmlab.eidentity.p
• Social
• Facebook Page : eIdentity:https://www.facebook.com/eidentity
• Modules(codeplex)
• Generic REST MA for FIM/MIM:https://restmafim.codeplex.com/
• 記事
• 企業のID管理/シングルサインオンの新しい選択肢「IDaaS」の活用
(http://www.atmarkit.co.jp/ait/articles/1508/07/news034.html)etc
• その他
• JNSA アイデンティティ管理WG(書籍:「クラウド環境におけるアイデンティティ管理ガイドライン」etc)
• OpenID Foundation Japan 教育・翻訳WG(OAuth/OpenID Connect仕様翻訳)、エンタープライズ・アイデン
ティティWG
Agenda
1. Azure ADのアプリケーション連携のおさらい
2. ID連携(Federation)~ Deep Dive
• SAML2.0
• OpenID Connect/OAuth
Azure ADの
アプリケーション連携のおさらい
社内PC
ドメイン
個社リソース
社内ネットワーク
モバイルユーザ
クラウド・サービス
(共有リソース)
関係会社
・取引先
ID基盤
利用
管理
ポリシーに沿った利用
利用
社内と
SSO
利用
社内と
SSO
登録・管理
Azure ADによるクラウドや社外利用者・モバイルを含めたアクセス管理
Azure ADを中心としたID基盤
Azure AD/Intune(クラウドID基盤)
ID連携 ID連携
ID連携
アクセス管
理の一元化
Azure AD
社内ネットワーク インターネット
社内ネットワーク
+インターネット
ファイルサーバ 社内Webアプリ クラウドWebアプリ
AD DS AD FS / WAP
ID基盤
アプリ
連携
デバイス
管理
Windows PC モバイルデバイス
AD DSによるオンプレミスID基盤
AD FSによるクラウドへの拡張(ハイブリッドID基盤)
Azure ADによるクラウドID基盤
ドメイン参加/
グループポリ
シーによる管理
統合Windows認証 ID連携(SAML/OpenID Connect等)
DRS(デバイス登録
サービス)
/Intuneによる管理
構成要素
7
比較項目 オンプレミスID基盤 クラウドID基盤
製品・サービス 特徴 製品・サービス 特徴
管理主体と対象 AD DS ユーザ、グループ、
デバイス(ドメイン参加PC)
Azure AD ユーザ、グループ、
デバイス(直接Azure ADで管
理するWindows 10、オンプレ
のドメイン参加PC)
ポリシー適用 AD DS/SCCM 詳細な制限が可能 Azure AD
/Intune
詳細な制限は不可能(モバイル
デバイス管理機能が中心)
シングルサインオン
対象
AD DS ファイルサーバ等を含む統合
Windows認証
- Kerberos/NTLMアプリケー
ションやリソースは不可能
AD FS SAML/ws-federationに対応し
たWebアプリケーション(個別
設定が前提)
Azure AD SAML/ws-
federation/OpenID Connect
に対応したWebアプリケー
ション(あらかじめプリセット
されたアプリケーションから選
択、および個別設定が可能)
ID管理 MIM
(Microsoft
Identity
Manager)
各種アプリケーションへのID同
期が可能(開発・カスタマイズ
が前提)
Azure AD 主要SaaSアプリケーションへ
のID同期機能がプリセット
SCIMに対応したアプリケー
ションへのID同期も可能だが
限定的
オンプレミスID基盤との比較
Azure AD
SaaSアプリケーション
自社開発アプリケーション
Azure ADと連携しているAPL群
③認証
①アクセス
②認証要求
④認証結果
APL登録
- URL情報の交換
- 公開鍵の取得、APL側へ登録
ID情報の同期
⑤認証結果
の検証
⑥同期済み
ユーザとの
紐づけ
シングルサインオン(APL連携)
Azure AD
社内ネットワーク
Azure AD
SaaSアプリケーションID連携
(SAML/OpenID Connect/ws-federation)
Azure ADと連携して
いるAPL間でSSO
ID連携
(SAML/ws-federation)
AD FS
Azure AD
Connect
AD DS
ID情報の同期ID情報の同期
Azure ADを経由して
社内AD FSへ連携
企業内ユーザ
統合Windows
認証でSSO
シングルサインオン(APL連携)/ハイブリッド
Azure AD
連携アプリの選択と利用
11
SSOとID同期の設定
12
IPベースのアクセス制御
ID連携(Federation)~ Deep Dive
- SAML 2.0
- OpenID Connect/OAuth
アンケート)どれが見たいですか?
1. SAML2.0
A) Google AppsとのSSO
B) カスタムアプリ(PHP)とのSSO
2. OpenID Connect/OAuth
A) カスタムアプリ(PHP)とのSSO
B) API生タタキ(UserInfo/Graph API)
14
注)全部今から作ります・・・
やれて2個かな。。。
SAML 2.0
Azure ADの対応状況
• メタデータに聞いてみる
16
17
メタデータから読み取れること
項目 対応状況 Metadata内の値
Protocol Version 2.0 urn:oasis:names:tc:SAML:2.0:protocol
SSO - Binding HTTP-Redirect urn:oasis:names:tc:SAML:2.0:bindings:
HTTP-Redirect
HTTP-POST urn:oasis:names:tc:SAML:2.0:bindings:
HTTP-POST
SLO - Binding HTTP-Redirect urn:oasis:names:tc:SAML:2.0:bindings:
HTTP-Redirect
18
SAMLを使ったアプリケーションとのSSO設定
19
• ギャラリーにある定義済みアプリケーション
• Google Apps
• カスタム・アプリケーション
• simplesamlphpを組み込んだphpアプリ(on App Service)
Google AppsとのSSO設定デモ
【やること】
・ギャラリーから選択してアプリケーションを追加
・シングルサインオン設定
・プロビジョニング設定
・属性マッピング
・SAML TracerでSAML Assertionを確認
・(時間があれば)IPベースの条件付きアクセス
ざっくり手順
1. ドメインを追加(Google Appsで使うドメインと同じもの)
2. ユーザ追加
3. アプリケーション追加(ギャラリーより)
4. シングルサインオン設定
5. プロビジョニング設定
6. 属性マッピングの変更(Assertion)
7. アクセスルールの定義
21
カスタムアプリとのSSO設定デモ
【やること】
・App Serviceの作成
・simplesamlphpのデプロイ
・ギャラリーから選択してアプリケーションを追加
・シングルサインオン設定(IdP/SP両方)
・属性マッピング
・SAML TracerでSAML Assertionを確認
ざっくり手順
1. App Serviceの作成
2. デプロイ設定:git
3. Simplesamlphpのダウンロード、解凍、設定(Adminパスワード、IdP EntityID)
4. App Serviceへのデプロイ
5. 仮想ディレクトリマッピングの追加
6. アプリケーション追加(ギャラリーより)
7. SSO設定(IdP metadataのダウンロード)
8. SimplesamlphpへのIdP登録
23
OpenID Connect/OAuth
Azure ADの対応状況
• .well-known/openid-configurationに聞いてみる
• https://login.microsoftonline.com/common/.well-known/openid-configuration
25
openid-configurationから読み取れること
項目 対応状況
token_endpoint_a
uth_methods_sup
ported
client_secret_post、private_key_jwt
response_modes_
supported
Query、Fragment、form_post
response_types_s
upported
Code、id_token、code id_token、token id_token、token
scopes_supported Openid
claims_supported Sub、iss、aud、exp、iat、auth_time、acr、amr、nonce、
email、given_name、family_name、nickname
26
OIDCを使ったアプリケーションとのSSO設定
27
• カスタム・アプリケーション
• phpアプリ(on App Service)
• プロトコルを生で実行する(Advanced REST Client)
• Graph APIを直接実行してみる
カスタムアプリとのSSO設定デモ
【やること】
・App Serviceの作成
・アプリケーションの追加
・phpアプリの作成
ざっくり手順
1. App Serviceの作成
• Visual Studio Onlineの有効化
2. アプリケーション追加
• client secretの生成
3. Visual Studio Onlineでphpアプリの作成
• エンドポイント、client idとclient secretの設定
29
APIの生タタキのデモ
【やること】
・アプリケーションの追加
・code flowでid tokenとaccess tokenをとる
・id tokenをjwt.ioで覗いてみる
・userinfoエンドポイントをたたいてみる
・implicit flowでaccess tokenをとる
・Graph APIをたたいてみる
ざっくり手順
1. UserInfoをたたく(Code flowを利用)
• Webアプリケーションを作成する
• Client secretを生成する
• Authorization Codeの取得
• Codeでid_tokenとaccess_tokenの取得
2. Graph APIをたたく(Implicit flowを利用)
• Nativeアプリケーションを作成する
• Manifestを編集してImplicitを有効化する
• ディレクトリへのアクセス権限を追加する
31
まとめ
まとめ
割と簡単
おしらせ
de:code 2016

Azure ADと外部アプリのID連携/SSO - Deep Dive