處理含有 OAM 與 SP 的內送屬性

當 OAM 作為服務提供者時,它:

這些儲存在 OAM 階段作業中的屬性之後可以使用:

本文討論如何將 OAM 作為服務提供者設定成:

概觀

屬性名稱對應

處理傳入屬性的主要原因是將 SSO 回應的屬性名稱對應至本機名稱 (由其他本機元件辨識)。此功能對於「聯合」部署很有用,因為不同的遠端夥伴有時會使用不同的名稱來參照相同的屬性。

例如,讓我們假設有下列使用案例:

透過處理內送屬性,OAM/SP 可以對應:

這可讓 SAML/OpenID 訊息中傳送之資料的用戶僅使用 first_name ID 參照使用者的名字:

請求屬性

OpenID 2.0 通訊協定定義 SP/RP 合作夥伴在執行階段從 IdP/OP 要求屬性的方式。

OAM/SP 提供從 OpenID OP 要求屬性的方法

屬性設定檔

先前我們說明 IdP 中的 SP 屬性設定檔,以及如何使用這些設定檔:

在 OAM/SP 中,要求屬性和對應屬性名稱的概念類似。IdP 屬性設定檔是指示 OAM/SP 的規則集合:

範例

其餘文章探討如何將 OAM/SP 配置到:

使用 OAM/SP 隨附的「測試 SP 應用程式」,瞭解如何處理 SAML/OpenID SSO 回應的屬性。

對應內送屬性

本節說明如何設定 OAM/SP,透過管理主控台處理內送 SAML 2.0 屬性。此範例以 OAM/SP 中識別為 AcmeIdP 之遠端 SAML 2.0 IdP 夥伴的同盟為基礎:

為此,請建立新的 IdP 屬性設定檔,並將其指派給 AcmeIdP。

注意:如果之後有新的 IdP 夥伴加入,且以相同名稱傳送屬性,則可以將現有的 IdP 屬性設定檔指派給這些新夥伴。

建立沒有對應規則的合作夥伴

設定 OAM/SP 將內送屬性對應至本機名稱之前,請先執行測試「同盟 SSO」,瞭解 OAM/SP 若未變更屬性的話,屬性的外觀。

在此情況下,IdP 合作夥伴會連結至空的 IdP 屬性設定檔,而 OAM/SP 則不會修改 SSO 回應中所包含的傳入屬性名稱。

IdP 夥伴的設定方式類似於 (idp-attribute-profile 是預設的 IdP 屬性設定檔,在我們的測試中是空的):

Create_ID_Partner.jpg 圖解說明

使用「測試 SP」應用程式以 AcmeIdP 執行「聯合 SSO」作業時,作業的結果會顯示使用者相等的結果,以下是在「宣告」中傳送:

IdP 傳回之宣告的「XML SAML 回應」為:

<samlp:Response ..>
    <saml:Issuer ...>http://acme.com/idp</saml:Issuer>
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion ...>
        <saml:Issuer ...>http://adc00peq.us.oracle.com:7499/fed/idp</saml:Issuer>
        <dsig:Signature ...>
        ...
        </dsig:Signature>
        <saml:Subject>
            <saml:NameID ...>alice</saml:NameID>
            ...
        </saml:Subject>         <saml:Conditions ...>
         ...
        </saml:Conditions>         <saml:AuthnStatement ...>
        ...
        </saml:AuthnStatement>
        <saml:AttributeStatement ...>
            <saml:Attribute Name="email" ...>
                <saml:AttributeValue ...>alice@oracle.com</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="surname" ...>
                <saml:AttributeValue ...>Appleton</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="fname" ...>
                <saml:AttributeValue ...>Alice</saml:AttributeValue>
            </saml:Attribute>
        </saml:AttributeStatement>
    </saml:Assertion>
</samlp:Response>

「測試 SP」頁面顯示 OAM/SP 如何處理屬性。由於沒有對應規則,因此屬性的名稱保持不變。

Federation_SSO.jpg 圖解說明

建立對應規則

若要建立新的 IdP 屬性設定檔,請執行下列步驟:

  1. 移至「OAM 管理主控台」:http (s)://oam-admin-host:oam-admin-port/oamconsole

  2. 瀏覽至 Identity FederationService Provider Administration

  3. 按一下身分識別提供者屬性設定檔頁籤

  4. 按一下建立 IdP 屬性設定檔按鈕

Create_Mapping_Rules.jpg 圖解說明

設定新 IdP 屬性設定檔的基本資訊:

忽略未對應的屬性注意事項:如果勾選,OAM/SP 會捨棄此「屬性設定檔」中未定義之 SAML/OpenID 回應的任何屬性。

關於預設 IdP 夥伴屬性設定檔的注意事項:如果勾選,當透過 UI 建立新的 IdP 夥伴時,將會預先指派 IdP 屬性設定檔。

Create_Attr_Profile.jpg 圖解說明

新增必要的對應。請執行下列作業來新增 firstname 對應:

執行下列作業以新增姓氏對應:

IdP 屬性設定檔現在已設定成將 fname 和 surname 屬性對應至連結至此設定檔之 IdP 夥伴的本機名稱。

注意:我們不需要建立電子郵件的對應,因為

IdP_Attr_Profile.jpg 圖解說明

必須更新 IdP 合作夥伴,才能使用新的 IdP 屬性設定檔:

  1. 移至「OAM 管理主控台」:http(s)://oam-admin-host:oam-admin-port/oamconsole

  2. 瀏覽至 Identity FederationService Provider Administration

  3. 按一下搜尋身分識別提供者夥伴

  4. 開啟想要的 IdP 合作夥伴

  5. 在「屬性對應」區段中,選取新建立的 IdP 屬性設定檔作為屬性設定檔

  6. 按一下儲存 (Save)

Update_IdP_Attr_Profile.jpg 圖解說明

測試

我們再次使用 Test SP 應用程式,以使用新的 IdP 屬性設定檔與 OAM 進行聯合 SSO 作業。

由 IdP 傳送之宣告的「XML SAML 回應」仍然相同:

<samlp:Response ..>
    <saml:Issuer ...>http://acme.com/idp</saml:Issuer>
    <samlp:Status>
        <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
    </samlp:Status>
    <saml:Assertion ...>
        <saml:Issuer ...>http://adc00peq.us.oracle.com:7499/fed/idp</saml:Issuer>
        <dsig:Signature ...>
        ...
        </dsig:Signature>
        <saml:Subject>
            <saml:NameID ...>alice</saml:NameID>
            ...
        </saml:Subject>         <saml:Conditions ...>
         ...
        </saml:Conditions>         <saml:AuthnStatement ...>
        ...
        </saml:AuthnStatement>
        <saml:AttributeStatement ...>
            <saml:Attribute Name="email" ...>
                <saml:AttributeValue ...alice@oracle.com</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="surname" ...>
                <saml:AttributeValue ...>Appleton</saml:AttributeValue>
            </saml:Attribute>
            <saml:Attribute Name="fname" ...>
                <saml:AttributeValue ...>Alice</saml:AttributeValue>
            </saml:Attribute>
        </saml:AttributeStatement>
    </saml:Assertion>
</samlp:Response>

「測試 SP」頁面會顯示不同的結果,因為 OAM/SP 會根據以下規則來處理屬性:

Test_Federation_SSO.jpg 圖解說明

請求屬性

本節說明如何使用 OAM WLST 命令,在程式實際執行時將 OAM/SP 設定為從 IdP 要求屬性。此範例以遠端 OpenID 2.0 IdP/OP 夥伴的聯合為基礎,OAM/SP 設定為:

要求下列屬性:

為此,請建立新的 IdP 屬性設定檔,並將其指派給 acmeOP。之後,如果新的 OP 合作夥伴已加入,則可以指派現有的 IdP 屬性設定檔,讓 OAM/SP 從這些新的 IdPs 要求相同的屬性。

假設您已經在 WLST 環境中並使用下列方式連線:

  1. 執行下列動作以輸入 WLST 環境:$IAM_ORACLE_HOME/common/bin/wlst.sh

  2. 連線「WLS 管理」伺服器:connect()

  3. 瀏覽至「網域程式實際執行」分支:domainRuntime()

步驟

若要設定新的 IdP 屬性設定檔,請執行下列步驟:

  1. 建立新的「SP 屬性設定檔」createIdPPartnerAttributeProfile("openIDAttrProfile")

  2. 指定新 IdP 屬性設定檔的名稱

  3. 建立電子郵件屬性的對應,並在執行時期要求該屬性 setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://axschema.org/contact/email", "email", requestFromIdP="true")

  4. 指定要修改的 IdP 屬性設定檔名稱

  5. 指定 OpenID 屬性名稱給 http://axschema.org/contact/email

  6. 指定屬性的本機名稱:email

  7. 指示 OAM/SP 應在程式實際執行時要求:requestFromIdP="true"

  8. 建立電子郵件屬性的對應,並在執行時期要求該屬性 setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://schemas.openid.net/ax/api/user_id", "userid", requestFromIdP="true")

  9. 指定要修改的 IdP 屬性設定檔名稱

  10. 指定 OpenID 屬性名稱給 http://schemas.openid.net/ax/api/user_id

  11. 指定屬性的本機名稱:userid

  12. 指示 OAM/SP 應在程式實際執行時要求:requestFromIdP="true"

若要將 IdP 夥伴更新為使用該 IdP 屬性設定檔,請執行:

OpenID 回應

遠端 IdP 為 alice/alice@oracle.com 產生的 OpenID 回應為:

https://acme.com/oam/server/fed/sp/sso?reEd=id-TEMxjNN7SEdYWowvioAuTAx7UPuKAUsj-NPWLSUf&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20&openid.claimed_id=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20%3Fid%3Did-YxEgHp7b49OrDy9dJP4BWrwbNUQ-&openid.identity=http%3A%2F%2Fadc00peq.us.oracle.com%3A7499%2Ffed%2Fidp%2Fopenidv20%3Fid%3Did-YxEgHp7b49OrDy9dJP4BWrwbNUQ-&openid.return_to=http%3A%2F%2Fadc00pcc.us.oracle.com%3A23002%2Foam%2Fserver%2Ffed%2Fsp%2Fsso%3FreEd%3DidTEMxjNN7SEdYWowvioAuTAx7UPuKAUsj-NPWLSUf&openid.response_nonce=2014-03-07T22%3A22%3A24Zid-8PQjU4IXHX6inl35bHEFws1Yv-8-&openid.assoc_handle=id-Iek3nx7-n2LldOPeooa4auWKC4-&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ax.mode=fetch_response&openid.ax.type.attr0=http%3A%2F%2Fschemas.openid.net%2Fax%2Fapi%2Fuser_id&openid.ax.value.attr0=alice&openid.ax.type.attr1=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ax.value.attr1=alice%40oracle.com&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ax%2Cax.mode%2Cax.type.attr0%2Caopenid.sig=JBPLV5nDISw4qeWv8Yv4iPGJ6Y8%3D

與屬性相關的解碼 URL 查詢參數為:

「測試 SP」頁面會顯示不同的結果,因為 OAM/SP 會根據以下規則來處理屬性:

OpenID_Response.jpg 圖解說明

其他學習資源

探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,瀏覽 education.oracle.com/learning-explorer 成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center