azure adと外部アプリのid連携/sso - deep dive

34
Azure AD と外部アプリの ID 連携 /SSO - Deep Dive MVP for Enterprise Mobility Naohiro Fujie / @ phr_eidentity / http://idmlab.eidentity.jp 1

Upload: naohiro-fujie

Post on 16-Apr-2017

5.824 views

Category:

Technology


10 download

TRANSCRIPT

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

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

MVP for Enterprise Mobility

Naohiro Fujie / @phr_eidentity / http://idmlab.eidentity.jp

1

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

自己紹介• 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

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

Agenda

1. Azure ADのアプリケーション連携のおさらい

2. ID連携(Federation)~ Deep Dive

• SAML2.0

• OpenID Connect/OAuth

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

Azure ADのアプリケーション連携のおさらい

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

社内PC

ドメイン

個社リソース

社内ネットワーク

モバイルユーザ

クラウド・サービス(共有リソース)

関係会社・取引先

ID基盤

利用

管理

ポリシーに沿った利用

利用

社内とSSO

利用

社内とSSO

登録・管理

Azure ADによるクラウドや社外利用者・モバイルを含めたアクセス管理

Azure ADを中心としたID基盤

Azure AD/Intune(クラウドID基盤)

ID連携 ID連携

ID連携

アクセス管理の一元化

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

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による管理

構成要素

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

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基盤との比較

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

Azure AD

SaaSアプリケーション

自社開発アプリケーション

Azure ADと連携しているAPL群

③認証

①アクセス

②認証要求

④認証結果

APL登録- URL情報の交換- 公開鍵の取得、APL側へ登録

ID情報の同期

⑤認証結果の検証

⑥同期済みユーザとの紐づけ

シングルサインオン(APL連携)

Azure AD

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

社内ネットワーク

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

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

連携アプリの選択と利用

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

11

SSOとID同期の設定

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

12

IPベースのアクセス制御

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

ID連携(Federation)~ Deep Dive- SAML 2.0- OpenID Connect/OAuth

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

アンケート)どれが見たいですか?

1. SAML2.0

A) Google AppsとのSSO

B) カスタムアプリ(PHP)とのSSO

2. OpenID Connect/OAuth

A) カスタムアプリ(PHP)とのSSO

B) API生タタキ(UserInfo/Graph API)

14

注)全部今から作ります・・・やれて2個かな。。。

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

SAML 2.0

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

Azure ADの対応状況

• メタデータに聞いてみる

16

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

17

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

メタデータから読み取れること

項目 対応状況 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

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

SAMLを使ったアプリケーションとのSSO設定

19

• ギャラリーにある定義済みアプリケーション

• Google Apps

• カスタム・アプリケーション

• simplesamlphpを組み込んだphpアプリ(on App Service)

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

Google AppsとのSSO設定デモ【やること】・ギャラリーから選択してアプリケーションを追加・シングルサインオン設定・プロビジョニング設定・属性マッピング・SAML TracerでSAML Assertionを確認・(時間があれば)IPベースの条件付きアクセス

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

ざっくり手順

1. ドメインを追加(Google Appsで使うドメインと同じもの)

2. ユーザ追加

3. アプリケーション追加(ギャラリーより)

4. シングルサインオン設定

5. プロビジョニング設定

6. 属性マッピングの変更(Assertion)

7. アクセスルールの定義

21

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

カスタムアプリとのSSO設定デモ【やること】・App Serviceの作成・simplesamlphpのデプロイ・ギャラリーから選択してアプリケーションを追加・シングルサインオン設定(IdP/SP両方)・属性マッピング・SAML TracerでSAML Assertionを確認

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

ざっくり手順

1. App Serviceの作成

2. デプロイ設定:git

3. Simplesamlphpのダウンロード、解凍、設定(Adminパスワード、IdP EntityID)

4. App Serviceへのデプロイ

5. 仮想ディレクトリマッピングの追加

6. アプリケーション追加(ギャラリーより)

7. SSO設定(IdP metadataのダウンロード)

8. SimplesamlphpへのIdP登録

23

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

OpenID Connect/OAuth

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

Azure ADの対応状況

• .well-known/openid-configurationに聞いてみる

• https://login.microsoftonline.com/common/.well-known/openid-configuration

25

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

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

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

OIDCを使ったアプリケーションとのSSO設定

27

• カスタム・アプリケーション

• phpアプリ(on App Service)

• プロトコルを生で実行する(Advanced REST Client)

• Graph APIを直接実行してみる

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

カスタムアプリとのSSO設定デモ【やること】・App Serviceの作成・アプリケーションの追加・phpアプリの作成

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

ざっくり手順

1. App Serviceの作成

• Visual Studio Onlineの有効化

2. アプリケーション追加

• client secretの生成

3. Visual Studio Onlineでphpアプリの作成

• エンドポイント、client idとclient secretの設定

29

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

APIの生タタキのデモ【やること】・アプリケーションの追加・code flowでid tokenとaccess tokenをとる・id tokenをjwt.ioで覗いてみる・userinfoエンドポイントをたたいてみる・implicit flowでaccess tokenをとる・Graph APIをたたいてみる

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

ざっくり手順

1. UserInfoをたたく(Code flowを利用)

• Webアプリケーションを作成する

• Client secretを生成する

• Authorization Codeの取得

• Codeでid_tokenとaccess_tokenの取得

2. Graph APIをたたく(Implicit flowを利用)

• Nativeアプリケーションを作成する

• Manifestを編集してImplicitを有効化する

• ディレクトリへのアクセス権限を追加する

31

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

まとめ

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

まとめ

割と簡単

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

おしらせde:code 2016