管理 OAuth 用戶端密碼擷取
簡介
您可以使用 Oracle Access Management (OAM),建立用於與 OAuth 提供者和應用程式互動的 OAuth 從屬端。依照預設,建立之後的 OAuth 用戶端密碼會儲存雜湊,無法加以擷取。從 2022 年 10 月的搭售品修補程式開始,您可以用可用的形式擷取 OAuth 用戶端的加密密碼。管理員必須啟用 OAuth 從屬端復原功能,才能擷取從屬端加密密碼。必須先更新 / 重設修正程式之前建立的舊 OAuth 從屬端,才能擷取加密密碼。如果停用 OAuth 從屬端加密密碼復原功能,即使在套用 2022 年 10 月 BP 之後,OAuth 從屬端 GET API 也會傳回雜湊形式 (不可使用) 的加密密碼。
目標
在 Oracle Access Management 中設定 OAuth 服務。
必要條件
- 安裝 Oracle Access Management 並設定 OAuth 功能 (OAM OAuth 概要 )
- 在 Oracle Access Management 中管理 OAuth 服務 (設定並設定 OAM OAuth)
作業 1:啟用 OAM OAuth 從屬端加密密碼復原
-
視您的組態而定,您可以開啟或關閉此功能。如果組態不存在,OAM 會假設功能已關閉。組態設定路徑:
/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig
組態設定名稱:ClientSecretRecoveryEnabled
下列命令可讓您判斷是否啟用或停用「從屬端加密密碼復原」。curl --location --request GET 'https://<admin-host>:<admin-port>/iam/admin/config/api/v1/config?path=/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig' --header 'Authorization: <Basic Authz Header>'
-
如果組態不存在或已停用 (false),則執行下列命令以新增 / 更新值為 true。注意:如果值已經存在且設為 true,則略過此步驟。
curl --location --request PUT 'https://<admin-host>:<admin-port>/iam/admin/config/api/v1/config?path=/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig' --header 'Authorization: <Basic Authz Header>' /--header 'Content-Type: application/xml' --data-raw '<Setting Name="OAuthConfig" Type="htf:map" Path="/DeployedComponent/Server/NGAMServer/Profile/ssoengine/OAuthConfig"> <Setting Name="ClientSecretRecoveryEnabled" Type="xsd:boolean">true</Setting></Setting>'
圖解 updating_config_to_true.jpg 的說明
在步驟 1 中使用 GET API 驗證值是否已順利更新。
工作 2:擷取 OAuth 從屬端詳細資訊 - 適用於新建立的從屬端
從屬端若啟用「加密密碼復原」功能,GET 從屬端 API 將會以 Basic <base64 encoded id:secret>
格式傳回加密密碼。
-
使用以下屬性建立用戶端。
- 用戶端名稱:
SampleClientNew1
- 從屬端 ID:
SampleClientNew1_id
- 密碼:
client_secret
- 用戶端名稱:
-
使用 OAuth 從屬端 API 擷取從屬端詳細資訊。
curl --location --request GET 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientNew1' --header 'Authorization: <Basic Authz Header>' --header 'Accept: application/json'
傳回的加密密碼為:
Basic U2FtcGxlQ2xpZW50TmV3MV9JZDpjbGllbnRfc2VjcmV0
Base 64 Decoded 值為:SampleClientNew1_Id:client_secret
工作 3:擷取 OAuth 從屬端詳細資訊 - 適用於現有從屬端
對於在啟用加密密碼復原功能之前建立的從屬端,除非重設 / 更新此功能,否則無法復原加密密碼。GET 從屬端 API 會傳回訊息,重設擷取值的功能。
-
使用以下屬性建立用戶端。
- 用戶端名稱:
SampleClientOld1
- 從屬端 ID:
SampleClientOld1_id
- 密碼:
client_secret
- 用戶端名稱:
-
使用 OAuth 從屬端 API 擷取從屬端詳細資訊。
curl --location --request GET 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientOld1' --header 'Authorization: <Basic Authz Header>' --header 'Accept: application/json'
訊息為:OAMSSA-06399:目前的加密密碼無法復原。請重設加密密碼以將其復原。
-
使用 OAuth 用戶端 API 更新用戶端密碼。
curl --location --request PUT 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientOld1' --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: <Basic Authz Header>' --data-raw '{ "secret": "client_secret_new" }'
圖解 client_secret_modify.jpg 的說明
新密碼:
client_secret_new
-
使用 OAuth 用戶端 API 擷取更新的用戶端詳細資料。GET 從屬端 API 將傳回加密密碼,格式為
Basic <base64 encoded id:secret>
。curl --location --request GET 'https://<admin-host>:<admin-port>/oam/services/rest/ssa/api/v1/oauthpolicyadmin/client?identityDomainName=SampleDomain&name=SampleClientOld1' --header 'Authorization: <Basic Authz Header>' --header 'Accept: application/json'
圖解 get_old_client_post_modify.jpg 的說明
傳回的加密密碼為:
Basic U2FtcGxlQ2xpZW50T2xkMV9JZDpjbGllbnRfc2VjcmV0X25ldw==
Base 64 Decoded 值為:SampleClientOld1_Id:client_secret_new
-
如果組態
ClientSecretRecoveryEnabled
更新為 false,GET OAuth 從屬端 API 將會傳回雜湊加密密碼,而非 base64 編碼的結果,這是 2022 年 10 月組合修正程式之前的行為。
致謝
- 作者: Salil Jain、Monica Sankar
- 貢獻者: Oracle Access Management 開發團隊
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或是存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,造訪 education.oracle.com/learning-explorer 成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Manage OAuth Client Secret Retrieval
F56933-01
October 2022
Copyright © 2022, Oracle and/or its affiliates.