5

OpenID Connect Core 1.0 仕様に従って、認証リクエストにpromptvalueのパラメーターが含まれている場合none、サーバーは次の方法でそれを処理する必要があります。

認可サーバーは、認証または同意のユーザー インターフェイス ページを表示してはなりません。エンドユーザーがまだ認証されていない場合、またはクライアントが要求されたクレームに対して事前に構成された同意を持っていない場合、または要求を処理するための他の条件を満たしていない場合、エラーが返されます。エラー コードは通常、login_required、interaction_required、またはセクション 3.1.2.6 で定義されている別のコードです。これは、既存の認証および/または同意を確認する方法として使用できます。

私の問題は、この方法の前に受け取ったアクセス トークンを検証しようとすると (prompt=none他の必要なパラメーターと共にペアを渡す)、WSO2 IS サーバーは常にコード 302 で応答し、ログイン ページにリダイレクトすることです。以下は、次のcURLコマンドからの対応する出力です。

curl -v -k -X GET "https://localhost:9443/oauth2/authorize?prompt=none&scope=openid&client_id=BpMCycs5nBuZCpVLwSE5f6Hf5CYa&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fmy-app%2Fmy-ctx" --header "Authorization: Bearer a65544593fg9c67rbf95fc24a6953cb4"

> GET /oauth2/authorize?prompt=none&scope=openid&client_id=BpMCycs5nBuZCpVLwSE5f
6Hf5CYa&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fmy-app%2Fmy-ctx HTTP/1.1
> User-Agent: curl/7.30.0
> Host: localhost:9443
> Accept: */*
> Authorization: Bearer a65544593fg9c67rbf95fc24a6953cb4
>
< HTTP/1.1 302 Found
< Date: Thu, 14 Aug 2014 17:01:17 GMT
< Location: https://localhost:9443/commonauth/?sessionDataKey=bf5be153-4j31-429b
-9fa6-97rr27da213&type=oidc&commonAuthCallerPath=/oauth2/authorize&forceAuthent
icate=false&checkAuthentication=false&relyingParty=BpKCycd5dBfZdpVswSE5f6Hf5CYa&
tenantId=-1234&prompt%3Dnone%26scope%3Dopenid%26client_id%3DBpKCycr5dBuZCpVBwSE5
f6Hf5CYa%26response_type%3Dcode%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%25
3A8080%252Fmy-app%252Fmy-ctx

誰かが私に教えてもらえますか - それは認証要求自体の問題であり、私は何か間違ったことをしましたか、この場合の WSO2 IS サーバーの動作は仕様に準拠していませんか?

私はWSO2 Identity Server 5.0.0を使用しています

ご回答ありがとうございます。

4

2 に答える 2

2

仕様によると、クライアントはプロンプト パラメータを使用して、現在のセッションでエンド ユーザーがまだ存在していることを確認したり、要求に注意を向けたりすることができます。このパラメーターにその他の値が含まれていない場合、エラーが返されます。

ただし、このリクエストではプロンプト値として none のみを送信するため、プロンプト値は none に設定され、他の値はエラーになります。

例:

curl -v -k -X GET "https://localhost:9444/oauth2/authorize?prompt=none+login&scope=openid..."

于 2014-09-22T23:42:15.557 に答える
0

おそらく、次のリクエストを使用してトークンを検証できます。

curl -k -H "Authorization: Bearer <token>" \
https://localhost:9443/oauth2/userinfo?schema=openid

ユーザーが認証されている場合、ユーザー情報を返します。これが回避策であり、トークンの期限切れデータを取得できないことはわかっていますが、場合によっては役立つことがあります。私は同様の問題を抱えてここに来ました.あなたの質問は私にそれを解決する方法を教えてくれました.

于 2016-09-22T19:34:10.527 に答える