Keycloak APIを介してクライアントシークレットを取得する方法
ドキュメントで私は見る:
GET /admin/realms/{realm}/clients/{id}/client-secret
私のコードは次のとおりです:
data = {
"grant_type" : 'password',
"client_id" : 'myclientid',
"username" : 'myusername',
"password" : 'mypassword'
}
response = requests.get("https://mylink.com/auth/admin/realms/{myrealm}/clients/{myclientid}/client-secret", data=data, headers= {"Content-Type": "application/json"})
常に401エラーが発生します。
何が悪いのでしょうか?
認証が機能していないと思います。
例:
トークンを入手する
data = {"username": "username", "password": "password",
"client_id": "client_id", "client_secret": "client_secret",
"grant_type": "password"}
token = request.post("https://{server-url}/"realms/{realm-name}/protocol/openid-connect/token", data=data)
APIへのリクエスト
response = requests.get("https://mylink.com/auth/admin/realms/{myrealm}/clients/{myclientid}/client-secret", data=data, headers= {"Authorization": "Bearer " + token.get('access_token'), "Content-Type": "application/json"})
URLの{id}はclientIdではなく、clientIdとは異なります。キークロークの一意のID(uuid
)です。628e4b46-3d79-454f-9b1c-e07e86ee7615
のようなもの
GET/admin/realms/{realm}/clients/{id}/client-secret
IdとclientIdの両方を持つClientRepresentationのリストを返すこのapiを使用してIDを取得できます。Idを使用します
GET/{realm}/clients
`