私は次のことができる必要があります(プレーンなcURLとJSONサーバーサイド-フレームワークやJavaはありません):
サードパーティから提供されたKeycloakアクセストークンの文字列表現を使用して、トークンが有効であることを確認します。
トークンが有効な場合は、そのユーザーのKeycloakIDを取得します。
プレーンな古いHTTP投稿を使用してこれを行うにはどうすればよいですか?たくさんのJavaの例を見つけましたが、その下にある生のHTTPPOSTと応答を知る必要があります。
トークンを検証するのはこのようなものですか?
/auth/realms/<realm>/protocols/openid-connect/validate?access_token=accesstokenhere
これはデータに関して何を返しますか(申し訳ありませんが、現在、問い合わせるテストサーバーがありません)?
ありがとう。
検証エンドポイントは現在機能していないようです。以前はアクセストークンを返していました。現在、keycloak2.5.1を使用しています。 Matyasによる投稿(および彼が参照する post )で述べたように、 introspect トークンエンドポイントを使用する必要がありました。
私のテストでは、ベアラー認証は機能しませんでした。 base64でエンコードされたクライアント資格情報とともに基本認証ヘッダーを使用する必要がありました。
base64.encode("<client_id:client_secret>".getBytes("utf-8"))
イントロスペクトエンドポイントからの応答は、Maytasによって参照される投稿で共有されるように、JSON形式であり、イントロスペクトされるトークンのタイプに基づいて多くのフィールドがあります。私の場合、token_type_hintはaccess_tokenとして設定されました。
requestParams = "token_type_hint=access_token&token=" + accessToken
応答には、ユーザー名、役割、リソースアクセスなどの必要なユーザーの詳細が含まれていました。 OAuth active、exp、issなどの必須属性も含まれます。詳細については、rfc7662#page-6を参照してください。
多分これが必要です: http://lists.jboss.org/pipermail/keycloak-user/2016-April/005869.html
唯一の問題は、イントロスペクトがパブリッククライアントと連携していないことです。
キーURLは次のとおりです: "http:// $ KC_SERVER/$ KC_CONTEXT/realms/$ REALM/protocol/openid-connect/token/introspect"
クライアントを承認する必要があります。基本認証を使用し、イントロスペクトにリクエスタートークンを与える必要があります。
curl -u "client_id:client_secret" -d "token=access_token_to_introspect" "http://$KC_SERVER/$KC_CONTEXT/realms/$REALM/protocol/openid-connect/token/introspect"