OAuthクライアント・シークレット取得の管理
イントロダクション
Oracle Access Management (OAM)を使用して、OAuthプロバイダおよびアプリケーションとの対話に使用するOAuthクライアントを作成できます。デフォルトでは、作成されたOAuthクライアント・シークレットはハッシュされて格納され、取得できないため使用できません。2022年10月のバンドル・パッチ以降、OAuthクライアントのシークレットを使用可能な形式で取得できます。管理者は、OAuthクライアント・リカバリ機能を有効にして、クライアント・シークレットを取得する必要があります。シークレットを取得する前に、パッチの前に作成された古いOAuthクライアントを更新/リセットする必要があります。OAuthクライアント・シークレット・リカバリ機能が無効になっている場合、OAuthクライアントGET APIは、2022年10月BPの適用後でも、ハッシュ形式(使用不可)でシークレットを返します。
目的
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_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.