LoginSignup
13
8

More than 3 years have passed since last update.

Azure AD と Oracle IDCS (Oracle Identity Cloud Service) Console を SAML 連携しシングル サインオンする手順を一から試してみる。

Posted at

はじめに

Azure と Oracle Cloud が相互連携できるようになった、というアナウンスは記憶に新しいかと思いますが、下記弊社 Blog にもありますとおり、アプリケーション レベルでも、SAML 連携及びユーザー プロビジョニングがサポートされるようになったとアナウンスされましたので、早速試してみたいと思います。

Using Azure AD with your Oracle Cloud apps
URL:https://techcommunity.microsoft.com/t5/Azure-Active-Directory-Identity/Using-Azure-AD-with-your-Oracle-Cloud-apps/ba-p/683915

長時間検証した挙句ですが、今回追加されたエンタープライズ アプリケーションの中にはシングル サインオンさせたい対象のアプリケーションは登録されていませんでした。
image.png

上記 Oracle IDCS (Oracle Identity Cloud Service) のコンソール画面(トップページ) に遷移するための、アプリケーションがない(Oracle Cloud Infrastructure Consoleだと思ってましたが、検証した結果それとも違いました)ので、「ギャラリー以外のアプリケーション」からアプリケーションを登録し、シングル サインオンさせる環境を作りました。
なにぶん弊社の公開情報も出ていないので、手探り状態となりますがご容赦ください。

Oracle Cloud 評価版を用意する

URL:https://myservices.us.oraclecloud.com/mycloud/signup?language=ja にアクセスし、30日間の無料クレジットを入手します。
image.png

アカウント詳細の入力にて必要な情報を入力します。
「クラウト・アカウント名」がアカウント URL に使用する、とあるので、Salesforceの「私のドメイン」のように一意の URL になるように設定する必要があります。
※今のところホーム・リージョンは「東京」を選択しない方がいいと思います。
環境ができあがるまでに恐ろしく時間がかかりました(15分なんていうレベルではありません)
アメリカのいずれかのリージョンを選択しましょう。
image.png

アカウント詳細の入力で入力した携帯電話番号に検証コードが送られてくるので、コードを入力し、「コードの確認」をクリックします。
ここで注意してほしいのが携帯電話の入力方法です。

モバイル番号の国種別は日本「81」にします、そして実際の電話番号は090もしくは080から入力するのが一般的ですが、最初の「0」は省かないとコードは届きません。例えば携帯電話が「09012345678」だった場合、入力する番号は「9012345678」にします。
そのようにしないといくら待ってもコードが届きませんのでご注意ください。
(外資系の会社に勤めているとすぐ気づくのですが…)
image.png

クレジット・カード詳細の追加画面にて「クレジット・カード詳細の追加」をクリックします。
image.png

適切な情報を入力して「Finish」をクリックします。
image.png

サインアップの完了をクリックします。
image.png

登録に最大15分かかるということなので、アカウントが作成されるまで待ちます。
image.png

Oracle Cloud 側のシングル サインオン設定

Oracle から環境準備のメールが来たらリンクを踏んで、テンポラリパスワードを変更します。
その後、下記画面ショットのとおり、言語とタイムゾーンを設定する画面が表示されるので、日本語環境に変更します。
image.png

コンソール画面にアクセスするためには、https://idcs-xxxx.identity.oraclecloud.com/ui/v1/adminconsole のような adminconsole を直接叩きます。

管理画面サインイン後に、左ペインから「Security」→「Identiy Providers」の順にクリックします。
image.png

画面上部の「+Add SAML IDP」をクリックします。
image.png

Name 欄に「Azure Active Directory」と入力し「Next」をクリックします。
image.png

Azure AD のSAML 署名証明書欄で「フェデレーション メタデータ XML」の「ダウンロード」リンクをクリックして入手したメタデータファイルをアップロードします。「Next」をクリックします。
image.png

Mapの項目で下記のように設定します。

Identity Provider User Attribute :Name ID
Oracle Identity Cloud Service User Attribute:Username
Requested NameID Format:

「Next」をクリックします。
image.png

Export にて、SP Metadata をダウンロードできそうですね。
つまりこのメタデータをダウンロードして、 Azure AD 側にアップロードすれば、Entity ID や ACS などが自動的に設定されるようです。
「Download」をクリックし、任意のフォルダダウンロードします。
image.png

最後に Activate をクリックし、Azure AD を IdP として設定を完了させます。
image.png

You have activated the Idntity Provider. と表示されるのを確認し、「Finish」をクリックします。
image.png

Identity Providers の一覧に Azure Active Directory と表示されることを確認します。
image.png

Azure AD 側のシングル サインオンの設定

エンタープライズ アプリケーションより、「+新しいアプリケーション」を選択します。
image.png

アプリケーションの追加画面にて、「ギャラリー以外のアプリケーション」をクリックします。
image.png

名前に任意の名前(今回は Oracle Identity Cloud Service Consoleと入力しています)を入力し、「追加」をクリックします。
image.png

概要画面より「シングル サインオン」をクリックします。
image.png

シングル サインオン方式の選択より「SAML」をクリックします。
image.png

画面上部の「メタデータ ファイルをアップロードする」をクリックします。
image.png

Oracle Cloud 側でダウンロードしたメタデータを選択し「追加」をクリックします。
image.png

値が自動入力されたことを確認し、「保存」ボタンをクリックします。
image.png

一通り設定が入ったので、画面左の「ユーザーとグループ」から Oracle Cloud にシングル サインオンさせたいユーザーを割り当てます。
image.png

ユーザーを選択して「選択」をクリックします。
image.png

「割り当て」をクリックします。
image.png

今回は、プロビジョニング機能を使わないので、Oracle Cloud 側に同一のユーザーを用意します。
Oracle Cloud のユーザー管理画面より、画面右の「追加」をクリックします。
image.png

電子メールをユーザー名として使用にチェックを入れ、「次へ」をクリックします。
image.png

マイ・ロールの設定画面で、各種サービスへのロールを割り当てます。
実際に運用する際には各ユーザーごとに細かくロールを割り当てる必要がありますが、今回は動作検証なので、管理者ロールを割り当てます。
画面右上の「終了」をクリックします。
image.png

test001 ユーザーが作成されました。
image.png

ハマり箇所まとめ

ユーザーは Federated にするかどうかがよく分からなかったのですが、最終的には、デフォルト値(No)のままでよく、Authenticated By の箇所も OICS のままで問題ないようです。今回のシングル サインオンは IdP-Initiated になりますが、問題なく Azure AD から SAML Response を返していました。

image.png

IDP Policies は設定不要?
Identity Providers の設定に Azure AD を追加しないと SAML 認証できないと思いましたがそんなことはありませんでした。
一体この設定は何のために必要なのかは結局分からず。
image.png
image.png

Show on Login Page を有効にすると、サインイン画面のトップページにアイコンが追加される。
image.png

こんな感じで、Identity Provider の項目で追加した Azure Active Directory のアイコンが追加されます。
直接資格情報を入力するか、Azure Active Directory にリダイレクトして Azure AD ユーザーで認証要求をさせるかどうか、いずれかを選べるようになります。
image.png

シングル サインオンのテスト

アクセス パネル(myapps.microsoft.com)にアクセスします。

設定した OICS Console のアイコンをクリックします。
image.png

コンソール画面にシングル サインオンできることを確認します。
image.png

上記画面から Admin Console にアクセスするためには、右上のアカウントメニューより、「Admin Console」をクリックします。
image.png

すると、下記画面ショットのとおり、OICS のコンソール画面に遷移します。
image.png

おまけ

いつもの SAML Request と SAML Response を転記します。

SAML Request

<samlp:AuthnRequest xmlns="urn:oasis:names:tc:SAML:2.0:metadata" ID="F84D888AA3B44C1B844375A4E8210D9E" Version="2.0" IssueInstant="2019-06-16T08:06:51.775Z" IsPassive="false" AssertionConsumerServiceURL="https://idcs-4087474b8d694d1fa3b4e89b95ee3557.identity.oraclecloud.com/fed/v1/sp/sso" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://idcs-4087474b8d694d1fa3b4e89b95ee3557.identity.oraclecloud.com/fed</Issuer>
  <samlp:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">
  </samlp:NameIDPolicy>
</samlp:AuthnRequest>

SAML Response

<samlp:Response ID="_349211b0-dfaa-4287-a6f7-d62d2f568089" Version="2.0" IssueInstant="2019-06-16T08:45:52.608Z" Destination="https://idcs-4087474b8d694d1fa3b4e89b95ee3557.identity.oraclecloud.com/fed/v1/sp/sso" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
  <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">https://sts.windows.net/ca90ee67-329e-4615-b7a1-b2e158252733/</Issuer>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
      <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
      <Reference URI="#_349211b0-dfaa-4287-a6f7-d62d2f568089">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
        <DigestValue>69CcshvkIdR7nW5MRDYeMB0VSw7zI+3ENw5VsdckgKk=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>JP+VJUyn2wuH29xlwxhy6FDrSN7s/y1wNdGbxbrP45TkbczcN1YC89op9Gf7xBKw2Zqa/ID1fLH0s3He48gVHI3xQt7inn3bD6BY9loPvYJZTuLzQbCw/LSoMG6D36SE4SCdGPRg0dFMbXgrSCC5Pwy2IqKlm8Gz4+xQ/hACt8poCvlIP1MmqUR/Q/jPuf7Py7AfkuqEf4nINEm9dkkts35GErewv98oOJaJtZUK0ygKSAQ99lPnM4492WKDddcGjNJQvLgJEwhZfweeQqKl/emP7pAj0hqmbyvx+zlAsgs3o3h9oeqLk+Qs14IEMwlrpwguWnpOPyJu5bfL2v/lDg==</SignatureValue>
    <KeyInfo>
      <ds:X509Data xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Certificate>MIIC8DCCAdigAwIBAgIQciUer//364pAfvCgmB1c1zANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylNaWNyb3NvZnQgQXp1cmUgRmVkZXJhdGVkIFNTTyBDZXJ0aWZpY2F0ZTAeFw0xOTA2MTYwNjI1MjFaFw0yMjA2MTYwNjI1MjFaMDQxMjAwBgNVBAMTKU1pY3Jvc29mdCBBenVyZSBGZWRlcmF0ZWQgU1NPIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmoOCTf8XlICrFKoeYrqhsquMs8Y7g5qBwJifzER5RL+e2/PotGH6hmwF5MpvaMEtnFQY5ET8fyeX3RlEUrhjioMujjjRrecG7YVeWVmzh2jIUupXvtZ7e05bBzjonK/oQOeWxEnIKw8u8C6or85/9ngLBvp9ateAvSdVaA+K/a+7cFEXqte+SuZdwaqCvDYNFqVRtsLTxAlV0UcoB5nMgFl/Xf2LfFif6aooK2bApGc9WExpcaNgjTI+2IuVBqy0eONr7RAjEjvyHqpulHctor+cgUVpJe4U1v7BaIaLDlyrgOYs5Iwu7OpBUfbH81AEkZLoaq4KdA9a5AiG8VgAPQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQArGlsn7d9dPWJjQFtOQv+oy0zHSgAitDs+J8qBHGgcsaVE1cR5778woHWOBoEYrqg8uM9pM04cI51cHzteBdrlQXOya04W8+N4umGuyMGDfMe9TQ860lYhUBVGoPRtXRgzTnrIQq4v5h0HPbD4hLOv2QTZogDlpn7jzJKara2dt5S1aDiEIA5N/tH3DYbPZOkC128vGDt4qVMFo2rSbmeKwldEBNGjgKRvnVZPrS0t8ReuAtKt6B8tP+VGcmhHED0irruhtzqTJILqUx+FJWjf2d2y6ANeFO7aCAn9wjlDafDMeCH5YEOTxM65IIMxU5H9KUuaYKz/AzpplJ/0TY/3</ds:X509Certificate>
      </ds:X509Data>
    </KeyInfo>
  </Signature>
  <samlp:Status>
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" />
  </samlp:Status>
  <Assertion ID="_e6265e4c-d608-4371-bd56-2556d5572300" IssueInstant="2019-06-16T08:45:52.592Z" Version="2.0" xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
    <Issuer>https://sts.windows.net/ca90ee67-329e-4615-b7a1-b2e158252733/</Issuer>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
      <SignedInfo>
        <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
        <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
        <Reference URI="#_e6265e4c-d608-4371-bd56-2556d5572300">
          <Transforms>
            <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
            <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
          </Transforms>
          <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
          <DigestValue>dLAFB0Mc4pw4683qto+FWBQkHB+lqPVL0JxlooYHvYM=</DigestValue>
        </Reference>
      </SignedInfo>
      <SignatureValue>UJbugxnnjBiu1y/3iBT8F0soZAzz8bcihnp/a/FFxsBMDB/jnxMqko/+RUx0rWiD2dCjnJANm5/3wNugOeHei4uZaIuMfkyKXQBNGZ0xRWvNyATf1gKZkBjS9L4lWl8AF3ZKm7T9bUHtpysCYzs4YoPh/tAXcyFy4NpHybvlVdzFse/MdfgtfkCh7gXqEooPixkn5YtIr6QVcsvy75DgQD80JDK+V+7jH+t5sL7yj+l4F8Iaf/srePz03+LwkNDoIjX7MXoNK9LmtnU/Bt3jNb4OV157tvxZBLoFNvWIxP32R+Aygfd1rnjyNxmRMZw8W1jUy+ntqS9bJpDCUmCMhQ==</SignatureValue>
      <KeyInfo>
        <X509Data>
          <X509Certificate>MIIC8DCCAdigAwIBAgIQciUer//364pAfvCgmB1c1zANBgkqhkiG9w0BAQsFADA0MTIwMAYDVQQDEylNaWNyb3NvZnQgQXp1cmUgRmVkZXJhdGVkIFNTTyBDZXJ0aWZpY2F0ZTAeFw0xOTA2MTYwNjI1MjFaFw0yMjA2MTYwNjI1MjFaMDQxMjAwBgNVBAMTKU1pY3Jvc29mdCBBenVyZSBGZWRlcmF0ZWQgU1NPIENlcnRpZmljYXRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmoOCTf8XlICrFKoeYrqhsquMs8Y7g5qBwJifzER5RL+e2/PotGH6hmwF5MpvaMEtnFQY5ET8fyeX3RlEUrhjioMujjjRrecG7YVeWVmzh2jIUupXvtZ7e05bBzjonK/oQOeWxEnIKw8u8C6or85/9ngLBvp9ateAvSdVaA+K/a+7cFEXqte+SuZdwaqCvDYNFqVRtsLTxAlV0UcoB5nMgFl/Xf2LfFif6aooK2bApGc9WExpcaNgjTI+2IuVBqy0eONr7RAjEjvyHqpulHctor+cgUVpJe4U1v7BaIaLDlyrgOYs5Iwu7OpBUfbH81AEkZLoaq4KdA9a5AiG8VgAPQIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQArGlsn7d9dPWJjQFtOQv+oy0zHSgAitDs+J8qBHGgcsaVE1cR5778woHWOBoEYrqg8uM9pM04cI51cHzteBdrlQXOya04W8+N4umGuyMGDfMe9TQ860lYhUBVGoPRtXRgzTnrIQq4v5h0HPbD4hLOv2QTZogDlpn7jzJKara2dt5S1aDiEIA5N/tH3DYbPZOkC128vGDt4qVMFo2rSbmeKwldEBNGjgKRvnVZPrS0t8ReuAtKt6B8tP+VGcmhHED0irruhtzqTJILqUx+FJWjf2d2y6ANeFO7aCAn9wjlDafDMeCH5YEOTxM65IIMxU5H9KUuaYKz/AzpplJ/0TY/3</X509Certificate>
        </X509Data>
      </KeyInfo>
    </Signature>
    <Subject>
      <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">test001@shyamag015.onmicrosoft.com</NameID>
      <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
        <SubjectConfirmationData NotOnOrAfter="2019-06-16T08:50:52.608Z" Recipient="https://idcs-4087474b8d694d1fa3b4e89b95ee3557.identity.oraclecloud.com/fed/v1/sp/sso" />
      </SubjectConfirmation>
    </Subject>
    <Conditions NotBefore="2019-06-16T08:40:52.592Z" NotOnOrAfter="2019-06-16T09:40:52.592Z">
      <AudienceRestriction>
        <Audience>https://idcs-4087474b8d694d1fa3b4e89b95ee3557.identity.oraclecloud.com/fed</Audience>
      </AudienceRestriction>
    </Conditions>
    <AttributeStatement>
      <Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid">
        <AttributeValue>ca90ee67-329e-4615-b7a1-b2e158252733</AttributeValue>
      </Attribute>
      <Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
        <AttributeValue>a85ac278-86e3-41b2-8a6e-30c1c5aa0a5d</AttributeValue>
      </Attribute>
      <Attribute Name="http://schemas.microsoft.com/identity/claims/displayname">
        <AttributeValue>test001@shyamag015.onmicrosoft.com</AttributeValue>
      </Attribute>
      <Attribute Name="http://schemas.microsoft.com/identity/claims/identityprovider">
        <AttributeValue>https://sts.windows.net/ca90ee67-329e-4615-b7a1-b2e158252733/</AttributeValue>
      </Attribute>
      <Attribute Name="http://schemas.microsoft.com/claims/authnmethodsreferences">
        <AttributeValue>http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password</AttributeValue>
      </Attribute>
      <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress">
        <AttributeValue>test001@shyamag015.onmicrosoft.com</AttributeValue>
      </Attribute>
      <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
        <AttributeValue>test001@shyamag015.onmicrosoft.com</AttributeValue>
      </Attribute>
    </AttributeStatement>
    <AuthnStatement AuthnInstant="2019-06-16T08:14:20.670Z" SessionIndex="_e6265e4c-d608-4371-bd56-2556d5572300">
      <AuthnContext>
        <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
      </AuthnContext>
    </AuthnStatement>
  </Assertion>
</samlp:Response>

まとめ

今現在Azure AD と Oracle Cloud で SAML 連携し、シングル サインオン構成するドキュメントはまだ揃いきっていない状況ですが、じきに整備されてくると思います。
基本的に公開情報がない状態で作業を行うと間違いなくハマるので、検証レベルであれば問題ないですが、本番環境と構築するのであれば、私と同じ轍を踏まないようにドキュメントが整備されてから作業をされた方が良いかと思います。

最後まで読んでいただきましてありがとうございました。

13
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
8