處理含有 OAM 與 SP 的內送屬性
當 OAM 作為服務提供者時,它:
-
驗證 IdP 的內送 SSO 回應
-
將 SSO 回應對應至 LDAP 使用者記錄
-
擷取 SSO 回應中所含的使用者 ID 和選擇性屬性,並將它們儲存在 OAM 階段作業中。
這些儲存在 OAM 階段作業中的屬性之後可以使用:
-
在「授權原則」中,條件 / 規則會評估 OAM 階段作業中的屬性
-
作為原則回應,將這些屬性提供給受 WebGate/OAM 保護的 Web 應用程式,作為 HTTP 標頭或 Cookie
本文討論如何將 OAM 作為服務提供者設定成:
-
「內送 SAML 宣告」或 OpenID SSO 回應中包含的處理作業屬性,可將內送屬性的名稱對應至本機名稱。
-
透過 OpenID 協定向 OP 要求屬性 (SAML 並未提供 SP 在程式實際執行時向 IdP 要求聯合 SSO 作業期間之屬性的方法)
概觀
屬性名稱對應
處理傳入屬性的主要原因是將 SSO 回應的屬性名稱對應至本機名稱 (由其他本機元件辨識)。此功能對於「聯合」部署很有用,因為不同的遠端夥伴有時會使用不同的名稱來參照相同的屬性。
例如,讓我們假設有下列使用案例:
-
IdP1 會在 SAML 宣告中將使用者的名字傳送為
firstname
-
IdP2 會在 SAML 宣告中將使用者的名字傳送為
f_name
-
本機元件 (受保護的應用程式 OAM...) 預期在處理內送屬性的
runtimeBy
將使用者的名字參照為first_name
,OAM/SP 可以對應:
透過處理內送屬性,OAM/SP 可以對應:
-
IdP1 的
firstname
至first_name
-
IdP2 的
f_name
至first_name
這可讓 SAML/OpenID 訊息中傳送之資料的用戶僅使用 first_name
ID 參照使用者的名字:
-
授權原則條件只會使用
first_name
參照 OAM 階段作業中的名字 -
原則回應使用
first_name
從 OAM 階段作業參照名字 -
原則物件並不知道遠端 IdPs 所使用的
firstname
或f_name
請求屬性
OpenID 2.0 通訊協定定義 SP/RP 合作夥伴在執行階段從 IdP/OP 要求屬性的方式。
OAM/SP 提供從 OpenID OP 要求屬性的方法
屬性設定檔
先前我們說明 IdP 中的 SP 屬性設定檔,以及如何使用這些設定檔:
-
它們定義應傳送至 SP 合作夥伴的屬性
-
屬性的命名方式
-
如何設定這些屬性的值
-
這些屬性應一律傳送,或僅在要求時傳送
在 OAM/SP 中,要求屬性和對應屬性名稱的概念類似。IdP 屬性設定檔是指示 OAM/SP 的規則集合:
-
程式實際執行時應要求哪些屬性 (僅限 OpenID 2.0)
-
SAML/OpenID 訊息中所含屬性的名稱應對應至本機的方式
範例
其餘文章探討如何將 OAM/SP 配置到:
-
透過「OAM 管理主控台」將內送屬性名稱對應至遠端 SAML 2.0 IdP 的本機名稱
-
在程式實際執行時要求屬性,然後透過 OAM WLST 命令將內送屬性名稱對應至本機名稱,以取得遠端 OpenID 2.0 OP
使用 OAM/SP 隨附的「測試 SP 應用程式」,瞭解如何處理 SAML/OpenID SSO 回應的屬性。
對應內送屬性
本節說明如何設定 OAM/SP,透過管理主控台處理內送 SAML 2.0 屬性。此範例以 OAM/SP 中識別為 AcmeIdP
之遠端 SAML 2.0 IdP 夥伴的同盟為基礎:
-
IdP 傳送「未指定」為 NameID 格式
-
NameID 值包含使用者 ID
-
宣告包含下列 SAML 屬性
-
使用者的名字,以
fname
識別 -
使用者的姓氏,以
surname
識別 -
使用者的電子郵件地址,由
email
識別 -
OAM/SP 會先設定成不對應任何屬性名稱,然後再對應
-
設定為將
fname
對應至firstname
-
將
surname
對應至lastname
-
電子郵件地址保留原樣
為此,請建立新的 IdP 屬性設定檔,並將其指派給 AcmeIdP。
注意:如果之後有新的 IdP 夥伴加入,且以相同名稱傳送屬性,則可以將現有的 IdP 屬性設定檔指派給這些新夥伴。
建立沒有對應規則的合作夥伴
設定 OAM/SP 將內送屬性對應至本機名稱之前,請先執行測試「同盟 SSO」,瞭解 OAM/SP 若未變更屬性的話,屬性的外觀。
在此情況下,IdP 合作夥伴會連結至空的 IdP 屬性設定檔,而 OAM/SP 則不會修改 SSO 回應中所包含的傳入屬性名稱。
IdP 夥伴的設定方式類似於 (idp-attribute-profile
是預設的 IdP 屬性設定檔,在我們的測試中是空的):
使用「測試 SP」應用程式以 AcmeIdP
執行「聯合 SSO」作業時,作業的結果會顯示使用者相等的結果,以下是在「宣告」中傳送:
-
NameID 設為電子郵件地址格式,並將值設為別名
-
傳送的屬性:
-
email
設為<alice@oracle.com>
-
fname
設為 Alice -
surname
設為 Appleton
-
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 如何處理屬性。由於沒有對應規則,因此屬性的名稱保持不變。
建立對應規則
若要建立新的 IdP 屬性設定檔,請執行下列步驟:
-
移至「OAM 管理主控台」:http (s)://oam-admin-host:oam-admin-port/oamconsole
-
瀏覽至 Identity Federation 、 Service Provider Administration
-
按一下身分識別提供者屬性設定檔頁籤
-
按一下建立 IdP 屬性設定檔按鈕
設定新 IdP 屬性設定檔的基本資訊:
-
輸入名稱
-
視需要輸入描述
忽略未對應的屬性注意事項:如果勾選,OAM/SP 會捨棄此「屬性設定檔」中未定義之 SAML/OpenID 回應的任何屬性。
關於預設 IdP 夥伴屬性設定檔的注意事項:如果勾選,當透過 UI 建立新的 IdP 夥伴時,將會預先指派 IdP 屬性設定檔。
- 如果勾選,它將會是 IdP 屬性設定檔,用於未指派 IdP 屬性設定檔的 IdP 夥伴 (例如透過 WLST 命令建立的夥伴)
新增必要的對應。請執行下列作業來新增 firstname
對應:
-
按一下「屬性對應」表格中的「新增項目」按鈕
-
設定電子郵件屬性:
-
訊息屬性名稱:
fname
-
OAM 階段作業屬性名稱:
firstname
-
夥伴要求:已勾選 (與 SAML 無關)
-
執行下列作業以新增姓氏對應:
-
按一下「屬性對應」表格中的「新增項目」按鈕
-
設定「名稱」屬性:
-
訊息屬性名稱:
surname
-
OAM 階段作業屬性名稱:
lastname
-
夥伴要求:已勾選 (與 SAML 無關)
-
IdP 屬性設定檔現在已設定成將 fname 和 surname 屬性對應至連結至此設定檔之 IdP 夥伴的本機名稱。
注意:我們不需要建立電子郵件的對應,因為
-
我們不要變更屬性名稱
-
未勾選忽略未對應的屬性。如果勾選該方塊,則必須為電子郵件建立對應。
必須更新 IdP 合作夥伴,才能使用新的 IdP 屬性設定檔:
-
移至「OAM 管理主控台」:
http(s)://oam-admin-host:oam-admin-port/oamconsole
-
瀏覽至 Identity Federation 、 Service Provider Administration
-
按一下搜尋身分識別提供者夥伴
-
開啟想要的 IdP 合作夥伴
-
在「屬性對應」區段中,選取新建立的 IdP 屬性設定檔作為屬性設定檔
-
按一下儲存 (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 會根據以下規則來處理屬性:
-
email
未變更 -
fname
已對應至firstname
-
surname
已對應至lastname
請求屬性
本節說明如何使用 OAM WLST 命令,在程式實際執行時將 OAM/SP 設定為從 IdP 要求屬性。此範例以遠端 OpenID 2.0 IdP/OP 夥伴的聯合為基礎,OAM/SP 設定為:
要求下列屬性:
-
OpenID 屬性名稱設為
http://axschema.org/contact/email
且本機名稱設為email
的電子郵件地址 -
UserID
的 OpenID 屬性名稱設為http://schemas.openid.net/ax/api/user_id
,本機名稱設為userid
為此,請建立新的 IdP 屬性設定檔,並將其指派給 acmeOP
。之後,如果新的 OP 合作夥伴已加入,則可以指派現有的 IdP 屬性設定檔,讓 OAM/SP 從這些新的 IdPs 要求相同的屬性。
假設您已經在 WLST 環境中並使用下列方式連線:
-
執行下列動作以輸入 WLST 環境:
$IAM_ORACLE_HOME/common/bin/wlst.sh
-
連線「WLS 管理」伺服器:
connect()
-
瀏覽至「網域程式實際執行」分支:
domainRuntime()
步驟
若要設定新的 IdP 屬性設定檔,請執行下列步驟:
-
建立新的「SP 屬性設定檔」
createIdPPartnerAttributeProfile("openIDAttrProfile")
-
指定新 IdP 屬性設定檔的名稱
-
建立電子郵件屬性的對應,並在執行時期要求該屬性
setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://axschema.org/contact/email", "email", requestFromIdP="true")
-
指定要修改的 IdP 屬性設定檔名稱
-
指定 OpenID 屬性名稱給
http://axschema.org/contact/email
-
指定屬性的本機名稱:
email
-
指示 OAM/SP 應在程式實際執行時要求:
requestFromIdP="true"
-
建立電子郵件屬性的對應,並在執行時期要求該屬性
setIdPPartnerAttributeProfileEntry("openIDAttrProfile", "http://schemas.openid.net/ax/api/user_id", "userid", requestFromIdP="true")
-
指定要修改的 IdP 屬性設定檔名稱
-
指定 OpenID 屬性名稱給
http://schemas.openid.net/ax/api/user_id
-
指定屬性的本機名稱:
userid
-
指示 OAM/SP 應在程式實際執行時要求:
requestFromIdP="true"
若要將 IdP 夥伴更新為使用該 IdP 屬性設定檔,請執行:
-
setIdPPartnerAttributeProfile
指令:setIdPPartnerAttributeProfile("acmeOP", "openIDAttrProfile")
指定 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 查詢參數為:
-
屬性名稱 #0:
openid.ax.type.attr0= http://schemas.openid.net/ax/api/user_id
-
屬性 #0 的值:
openid.ax.value.attr0=alice
-
屬性 #1 的名稱:
openid.ax.type.attr1= http://axschema.org/contact/email
-
屬性 #1 的值:
openid.ax.value.attr1=alice@oracle.com
「測試 SP」頁面會顯示不同的結果,因為 OAM/SP 會根據以下規則來處理屬性:
-
http://schemas.openid.net/ax/api/user_id
已對應至userid
-
http://axschema.org/contact/email
已對應至電子郵件
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,瀏覽 education.oracle.com/learning-explorer 成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Processing Incoming Attributes with OAM and SP
F61883-01
September 2022
Copyright © 2022, Oracle and/or its affiliates.