コンテンツまでスキップ

【Okta】Azure ADをIdPとしたOktaとのディレクトリ統合(設定編)

はじめに


こんにちはこんばんは、ディレクトリ統合をこよなく愛するネクストモードのおはらふです

今回は、みんなが大好きなAzure ADをIdPとしてOktaと連携する手順をご紹介いたします
前回のブログにて、この構成を組む背景やメリット等を紹介しましたので、合わせて見ていただけると嬉しいです

実装する構成


Azure ADをIdP(メインとなるID管理基盤)とし、SSOするひとつのアプリとしてOktaと連携するイメージです
もちろんOktaからいつも通り接続先SaaSにログインできます

今回実装する下図の構成では、Azure ADのユーザーをOktaのアプリと連携することでOktaにユーザーが自動作成され、その情報がSaaS側にも連携されます

okta-azuread-summary

手順概要


Okta公式ドキュメントに手順がありますので、この手順を参考に実装してきます

一部補足があった方が分かりやすい部分もありましたので、その点を中心にご紹介します

https://help.okta.com/oie/ja-jp/Content/Topics/Provisioning/azure/azure-integrate-main.htm

Azure AD:エンタープライズアプリケーション作成


Microsoft Azureにログインし、Azure ADにエンタープライズアプリを作りましょう
[エンタープライズアプリケーション] → [新しいアプリケーション] → [独自アプリケーションの作成]から作成できます

残念ながらOktaと検索してもお目当てのものは出てこないので、独自アプリケーションで任意の名前のアプリを作成します

azuread-app

作成後のシングルサインオンの項目から、作業の開始をクリックし画面へ遷移させます
[シングル サインオン方式の選択] では [SAML] を選択しましょう

一旦Oktaで使う証明書のダウンロードのために、シングルサインオンの項目で必須となっている [識別子] と [応答URL] に適当な値をぶっ込みます
Oktaにて証明書をインポートすると正しい値が出力されますので、この手順では適当な値入れましょう!

okta-azuread-saml

[証明書(Base64)] のダウンロードと、 [ログインURL] 、 [Azure AD識別子] のコピーをしておきます

okta-azuread-integration

Okta:Azure ADをIDプロバイダーとして設定


Oktaの管理者コンソールから [Security] → [identity Providers] → [Add identity provider] へ進み、[SAML 2.0 IdP] を追加します

okta-azuread-idp

設定する値についてはこちらを参考に、同期したい情報等を環境に合わせて設定してください

!!注意事項!!

  • 個人的にはOktaの [ユーザー名] を、公式ドキュメントにあるAzure ADの [メールアドレス] ではなく、[User Principal Name(UPN)] で設定行うことをお勧めします
    UPNを設定するために1工程増えますが、自由に設定できる [メールアドレス] より、ドメイン等の制約が厳しい [UPN] の方がトラブル等は少なくなると思います
  • Azure ADの [UPN] と [メールアドレス] が異なる場合にOktaとのマッピングをする際は、紐付けを誤らないように気をつけてください
    プロビジョニングするマッピングと、ログインに利用するマッピングが異なるとうまくログインできなくなります

今回はOkta公式ドキュメントととは違い、Azure ADの [UPN] をOktaの [ユーザー名] にマッピングするやり方で進めていきます

この段階ではUPNのマッピング情報がないため、[IdP username] に [idpuser.email] と一時的に入力しますが、後ほど変更しますので、作業を忘れないように覚えておきます

okta-azuread-settings

先ほどダウンロードした証明書(Base64)と、コピーしたログインURL、Azure AD識別子をそれぞれ設定します

okta-azuread-saml

下部の[Finish]を押すとサマリー画面が出てきます 以下それぞれの値を、適当な値をぶっ込んでおいたAzure ADの [基本的なSAML構成] に設定反映させます

  • Oktaの[Assertion Consumer Service URL]をAzure ADの[応答 URL (Assertion Consumer Service URL)]
  • Oktaの[Audience URI]をAzure ADの[識別子 (エンティティ ID)]

okta-azuread-provider

okta-azuread-saml

Okta:マッピング作業


プロビジョニングへ向け、もうちょっと手順が必要なのでやっていきます

上記で作成したIdPの [Actions] から [Edit Profile and Mappings] をクリックし、[Attributes] → [Mappings] の画面へ進みます
一番上のログイン以外の全てを [Do not map] にします

okta-azuread-mappings

続いて、[Filters] の項目にある [Custom] から全ての項目を消し去ります

okta-azuread-attributes

綺麗になったら [Add Attribute] を押します

この画面にて、Azure ADからOktaへマッピングさせたい属性を設定していきます
本構成では [UPN] と [lastName] 、[firstName] の属性をマッピングさせてみましょう

Azure ADに作成したアプリケーション内にある [属性とクレーム] から設定値をコピーできます
氏名の表記の仕方が違ったりExternal name(クレーム名)がURLなのが不思議な感じですが、そういうもんだと思ってみましょう

okta-azuread-claim

例:UPNの場合

  • Display name:upn
  • variable name:upn
  • External name:http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name

okta-azuread-attribute

属性のCustomが完了したら、先ほど消したマッピング作業をやり直します
[Attributes] → [Mappings] の画面へ進み、先ほど作ったカスタム属性を入力していきます

okta-azuread-mapping

最後に、仮で入れておいたIdPからログインする際のマッピングを、[メールアドレス] から [UPN] に変更します

[Identity Providers] → [Actions] → [configure Identity Provider]の画面へ進み、[IdP username] の設定値を [idpuser.upn] へ変更します

okta-azuread-idpsettings

以上で設定終了です!

統合テスト


早速テストをしてみましょう

前の手順で作ったAzure ADのOktaアプリにテストしたいユーザーを追加します

okta-azuread-usergroup

追加したらその下のシングル サインオンタブにてテストを行います
テストユーザーによってはプラグイン等必要な場合がありますので、Azure ADさんの指示に従ってください

okta-azuread-sso

無事にログインできたらテスト完了です!
ログイン時にJITで新規ユーザーがOktaに作られる動作となります

テストが終わったら、任意のユーザーなりグループなりを割り当てておきましょう!

おわりに


実際のお客様環境でもAzure ADとOktaを連携する機会は意外と多く、うまく連携することで既存のID管理の業務フローを変えずにOktaを利用することが可能です

もう少し補足で設定すると便利な項目もあるのですが、またの機会にご紹介したいと思います

それではよきOktaライフを!