azure adと外部アプリのid連携/sso - deep dive
TRANSCRIPT
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 ADConnect
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_auth_methods_supported
client_secret_post、private_key_jwt
response_modes_supported
Query、Fragment、form_post
response_types_supported
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