はじめに
Auth0を組み込んだアプリケーションへの認証でOktaを使ったSSOを設定する。Okta Workfowce Enterprise Connection もあるけど、こちらはOpenID Connectを使っていて、それがいけないわけではないが、今回はある事情でSAMLを使った設定をしたいと思う。
設定してみる
Okta設定
1. Applications > Applications から [Create App Integration] をクリック
2. SAML 2.0を選択して [Next] をクリック
3. アプリケーション名を入力して [Next] をクリック
4. SAMLの基本設定を入力
Generalの設定項目に以下の値を入力
Single Sign-On URL: https://{yourAuth0Domain}/login/callback?connection={yourAuth0ConnectionName}
Audience URI (SP Entity ID): urn:auth0:{yourAuth0TenantName}:{yourAuth0ConnectionName}
変数名 | 説明 |
---|---|
{yourAuth0Domain} |
Auth0ドメイン(例 mytenant.us.auth0.comもしくはカスタムドメイン) |
{yourAuth0ConnectionName} |
Auth0で作成したSAML Enterprise Connectionの名前 |
ということで、先にAuth0側で作成するEnterprise Connectionの名前を決めておきましょう。Oktaのorg名 にしておくとユニークな接続名として扱えて良いかも。
上記以外はデフォルトのままでOK
5. Attribute設定して [Next] をクリック
後でAuth0にマッピングするための情報を属性情報(Attribute)で指定
今回は基本的な情報のみだが、他にもDepartmentやTitle, primaryPhone等のプロファイル情報をマッピングすることも可能
Name | Value | 説明 |
---|---|---|
FirstName |
user.firstName |
名 |
LastName |
user.lastName |
姓 |
DisplayName |
user.displayName |
表示名(名+姓) |
Email |
user.email |
メールアドレス |
ExternalId |
user.getInternalProperty("id") |
ユニークユーザーID(00xxXXxxxxXxxxXXxxxx のようなOktaの内部ユーザーID) |
6. アプリケーションについてのFeedbackを入力
OIN (Okta Integration Network) に登録するわけではないので I'm an Okta customer adding an internal app および This is an internal app that we have created をチェックして [Finish]
7. ユーザーをアサイン
Assignmentsタブでアプリケーションを利用するユーザーもしくはグループをアサイン
8. [View SAML setup instructions] をクリック
9. [Download certificate] をクリックして証明書をダウンロード
後でAuth0の設定で使うので Identity Provider Single Sign-On URL も控えておこう
これでOkta側の設定はおしまい
続いてAuth0の設定をしよう
Auth0設定
1. Authentication > Enterprise から [SAML] を選択して新規作成
2. SAML接続設定を入力して [Create]
設定項目 | 値 |
---|---|
Connection name | Okta設定の際に予め決めておいた {yourAuth0ConnectionName} を指定 |
Sign In URL | Okta設定No.9で取得した Identity Provider Single Sign-On URL を指定 |
X509 Signing Certificate | Okta設定No.9でダウンロードした証明書をアップロード |
EnableSign Out | オフにする |
User ID Attribute | ExternalId |
Sign Request Algorithm | SHA-256 |
Sign Request Algorithm Digest | SHA-256 |
Protocol Binding | HTTP-POST |
3. Login Experience設定
Home Realm Discovery にOktaを使ってログインするユーザーのメールアドレスドメインを入力
4. IdP-Initiated SSOを許可
デフォルトのアプリケーション名やプロトコルを指定
5. Mappings設定
OktaのAttributeとAuth0のユーザープロファイルマッピングを以下のJSON指定
{
"name": "DisplayName",
"email": "Email",
"given_name": "FirstName",
"family_name": "LastName"
}
6. 有効にするアプリケーションを指定
7. Authentication > Authentication Profile で [Identifier First] を指定
これを指定するとログインボックスでメールアドレスだけ先に入力してドメインからログイン方法を判別してOktaのログイン画面にリダイレクトする Home Realm Discovery が有効になる
以上でAuth0の設定は完了
実際にログインしてみる(SP-Initiated)
Auth0でのログイン画面でメールアドレスを入力すると...
Oktaログイン画面にリダイレクトされる
その後、ログイン成功(スクショ略)
ユーザーも作成されている
IdP-Initiatedもできるようになっているので、Oktaダッシュボードからアイコンクリックすればログインできるようになっているはず
おわり
ということで、多少設定項目は多いかもしれないけどそんなに難しくなくポチポチやっていけば設定できた。
反省点としては email_verified
が false
になってしまうので、うまいこと true
にするような設定を模索できればと思う。OktaからAttributeとして渡せればそれが一番だけど、どう設定すればいいかはこれから調べていこう。
参考にしたドキュメント
Connect Your App to SAML Identity Providers | Auth0