根据OpenID Connect Core 1.0 规范,如果身份验证请求包含prompt
带值的参数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 身份服务器 5.0.0
提前感谢您的回答!