freedom-man.com

ブログは俺のセーブポイント

Tag: azure

AzureADのGraph API触ってみた

Azure Active DirectoryGraphAPIを触る機会があったので、備忘として残しておきます。

Graph APIの利用にあたって、以下のサイトを参考にしました。

Continue reading

Azure Active DirectoryでTwitterにシングルサインオンしてみる。

Azure Active Directoryネタです。

今回はAzure Active DirectoryでTwitterにシングルサインオンをしてみます。

通常、Twitterやfacebookなどサービスにシングルサインオンというと

これらのWebサービスをIdP(OP)としてOAuth、OpenID Connectによる認証連携をイメージしますが

Azure Active Directoryの場合は、AzureAD自体がIdPになり

TwitterなどのWebサービスがSPとなるような構成になります。

1. TwitterのギャラリーアプリをAADに追加

まずは対象のDirectoryを選択

aad-sso-select-directory

アプリケーションを選択して、追加をクリック

aad-sso-select-application

今回はギャラリーからアプリを追加

aad-sso-addapp

Twitterのアプリケーションを選択

aad-sso-twitter-gallery

追加するとこんな画面が表示される

aad-sso-twitter-settings

シングルサインオンの構成をクリックしてパスワードシングルサインオンになっていることを確認

aad-sso-settings

2. ユーザの割り当てを実行

Twitterのギャラリーアプリ設定画面から、「ユーザの割り当て」を選択してユーザ一覧にアクセスし

対象のAzureADユーザに対して割り当てを行う。

aad-sso-userlist

割り当てでは「ユーザの代わりにTwitter資格情報を入力する」にチェックを付けて

紐付けるTwitterのユーザ名/パスワードを入力する。

aad-sso-userassignment

これで、AzureAD側の設定は完了です。

3. アクセスパネルからシングルサインオンを行う

https://myapps.microsoft.comにアクセスしてAzureADユーザでログインを行うと

以下のようにシングルサインオン用のパネルが表示されます。

aad-accesspanel

複数のディレクトリに属すAzureADユーザの場合は右上のメニューからディレクトリを選択することが可能。

また、各ブラウザのAzureAD用のプラグインがインストールされていない場合は

パネルをクリックするとプラグインのインストール画面に遷移します。

aad-sso-plugin

AzureADのシングルサインオンの仕様上、プラグインをインストールしないと認証連携が動作しません。

インストール後にTwitterのアクセスパネルをクリックすると

一瞬Twitterのログイン画面が表示されて、AzureADに保持しているクレデンシャルと

プラグインのDOM操作によって自動ログインが行われます。

 

ChromeExtensionだと、以下のスクリプトがAzureADから発行されて

クライアントのChromeExtensionで当スクリプトを実行することで自動ログインを実装しているっぽいです。

HTTP通信やコードから全てを追ったわけではないので推測になりますが

おそらくは、AzureADからクレデンシャル付きの各アプリ固有のJSが送られてきて、

それをSessionStorageに保存して、各プラグインがSessionStorageに格納されたJSを

evalで実行するといった流れだと思われます。

 

ギャラリーアプリはTwitter以外にもfacebookやAWS(コンソール)、Salesforceにも対応しています。

SalesforceはSAMLだけじゃなくて今回の無理矢理(?)自動ログインの方法にも対応しています。

 

印象としてセキュリティポリシー云々でエンタープライズ領域で良いかどうかはわかんないけど

個人的に利用する分には便利だなーって感じです。

ただ、個人的に利用するんだったらLastPassみたいなパスワード管理サービスでも良いような気がしますが…。

おそらくLastPassもAzureADと同じような仕組みで自動ログインしているものと思われます。

Azure Active DirectoryとSalesforceのSSO【ギャラリーアプリ編】

IDMaaSシリーズ第三弾として今回はAzure Active Directory(AAD)をやってみます。

 

AADはざっくり言うと認証連携のIdPのクラウドサービスで

任意のアプリケーションに対してOpenID ConnectやSAML、WS-Federation等の

認証連携プロトコルを使ってシングルサインオンができるようになるサービスです。

また、これらの認証連携プロトコルのRP/SPとして対応していない特定のサービスに対しても

シングルサインオンができるような仕組みを持っています。

既存のActive DirectoryからAADに同期することで既存のActive Directoryを

ユーザーリポジトリとして利用することも可能です。

 

ということで、今回はAADを使ってSalesforceとのシングルサインオンをやってみます!

 

Azure Active Directoryに関する説明は以下のサイトが詳しいです↓

Windows Azure Active Directoryことはじめ (1/8):CodeZine

Azure ADとIdentity管理

クラウド時代のActive Directoryの使い方 – IT、IT製品の情報なら【キーマンズネット】

Tutorial: Azure AD Integration with Salesforce – TechNet Articles – United States (English) – TechNet Wiki 

1. Microsoft Azureポータルで対象のAADを選択

まずはアカウントにログインしてポータルトップへアクセスし

Active Directory>既定のディレクトリを選択します。

azure-main

 

ドメイン変更等の理由で規定のディレクトリを利用しない場合は

下メニューの”新規”からAzure Active Directoryを新規に追加します。

Auth0だとドメイン名の32文字の文字数制限があったりするので

外部アプリの制限に引っかかった等の場合は新しくAADを作成してください。

aad-new

2. 作成したディレクトリにユーザを追加

Azure Active Directory用のユーザを作成します。

このユーザに対してログインすることで他のサービスにシングルサインオンすることができます。

Microsoftアカウント(設定時にログインしているユーザ)でもシングルサインオンが可能です。

まずは、ユーザタブで”ユーザの追加”をクリック。

aad-userlist

作成するユーザ情報を入力。

aad-create-user

一時パスワードを発行します。(初回ログイン時にパスワードを設定するフロー)

aad-sf_temporary-passwd1

aad-sf-temporary-passwd2

3. SalesforceアプリをAAD上に作成

アプリケーションから新規のアプリケーションを追加

aad-application

ダイアログで”ギャラリーからアプリケーションを追加します”を選択

aad-application-garary

ギャラリー選択画面が出てくるのでSalesforceを選択

aad-gararyapp-list-sf

アプリケーションが作成され、クイックスタートメニューが表示されます

aad-sfapp-config

4. アプリケーションの設定(シングルサインオンの構成)

”シングルサインオンの構成”から”Windows Azure ADのシングルサインオン”を選択

aad-sfapp-type

アプリケーションURLの構成ではSP(Salesforce)側のEntityIDを設定。

重複がなければhttps://{マイドメイン}やhttps://saml.salesforce.com等でOK。

aad-sfapp-entityid

次に証明書のダウンロードを行い、発行者のURL、リモートログインURL、リモートログアウトURLをコピー。

下記のチェックボックスにチェックを付けて終了

aad-sf-settings

5. Salesforceでシングルサインオン設定を作成

以下のようにシングルサインオン設定を新規に作成する。

aad-sf-ssosetting

発行者、ID プロバイダのログイン URL、ID プロバイダのログアウト URLにはAADで発行した値を入力し

IDプロバイダの証明書にはダウンロードした証明書をセット。

エンティティIDは4で設定した値を入力。

 

ちなみにAADからのSAMLアサーションは以下のようになっており

MicrosoftアカウントなどのユーザはNameIdentifierにユーザ名が入ってこなかったりしたので

AAD以外のユーザに対してシングルサインオンさせたい場合には

メールアドレス属性値等のNameID以外の属性をマッピングするのが良さそうです。

 

設定のマイドメインから認証サービスを追加するのもお忘れなく!

 

この設定でシングルサインオン自体は可能ですが

AADのユーザ情報とSFDCのユーザ情報を同期させたい場合は以下の設定で対応可能です。

6. アプリケーションの設定(自動ユーザプロビジョニング)

AADのSalesforceアプリのクイックスタートから”ユーザプロビジョニングの構成”を行います。

同期処理はAPIを使ってバッチ処理で行われるので

同期用のユーザID・パスワード及びセキュリティトークンを設定します。

セキュリティトークンも必須らしいのでSFDCで発行しないといけないっぽいです。

aad-sf-provisioning-user

これでAADからSFDCへユーザ情報の同期処理が行われます。

7. アプリケーションの設定(ユーザの割り当て)

同期にはプロファイル情報が必要なので、割り当てるユーザのプロファイルを設定していきます。

まずはアプリのユーザ一覧から割り当てをクリック

aad-sf-usermanagement

ダイアログが出てくるので、任意のSalesforceプロファイルを割り当てると

SFDCへの同期対象として処理されます。

aad-sf-userrole

ダイアログでは最初はSFDCのデフォルト?のプロファイル一覧が表示されますが

同期が取られると実SFDC環境に存在するプロファイルが選択できるようになります。

また、最初の同期は10分くらい要するみたいらしいです。

 

あと、6でユーザプロビジョニングの設定をしてしまうと、設定の無効化ができなくなります。

シングルサインオン設定ガチャガチャいじってたら無効化できたりしたんですが

再現性が全くないのでプロビジョニングを無効化するときはアプリごと再作成するのが良さそう。

所感的なこと

AAD使った感想(って言っても一週間くらいしか触ってない)ですが

簡単にSAMLのIdPあるいはOIDCのOPをホスティングできちゃうのは良いなーと思いました。

 

また、無料のプランでもMFAは使えないものの、ディレクトリオブジェクトの制限が500,000個

かなりの数のユーザが作成できることになります。

プランと料金に関しては本家の価格表を参照ください。

 

まだ属性のマッピングとか細かい制御ができないっぽいのがアレですが、今後の機能拡張に期待大!

© 2017 freedom-man.com

Theme by Anders NorenUp ↑