使用oauth2进行静默验证(prompt = none)

时间:2018-02-16 15:27:16

标签: authentication oauth-2.0 wso2

您好我有SPA(单页申请),我使用oauth2隐式授权进行授权。作为身份服务器,我有Wso2身份服务器5.4.1。

我可以授权应用程序,一切都按照需要运行 - 我也配置为跳过同意。

问题在于: 我试图在... / oauth2 / authorize service和attribute prompt = none:

的帮助下,使用以下链接以静默方式重新验证已登录用户
https://xxx:9447/oauth2/authorize?response_type=id_token token&nonce=123&prompt=none&client_id=xxxx&scope=openid&redirect_uri=http://localhost:63342/myapp/www/index.html&id_token_hint=previous_user_token

如下所示,提示=无:

http://openid.net/specs/openid-connect-core-1_0.html#AuthorizationEndpoint  我应该能够在用户登录时对用户进行身份验证,并将同意配置为跳过或始终批准。

但我总是在URI中得到同样的错误:

http://localhost:63342/myapp/www/index.html#error_description=Authentication+required&error=login_required&session_state=state124124125125.1251512

1 个答案:

答案 0 :(得分:1)

此错误login_required表示您的用户未登录IP。您必须首先通过将其重定向到授权端点来连接,而不将prompt参数设置为none。

请参阅:http://openid.net/specs/openid-connect-core-1_0.html#AuthError

  

login_required   授权服务器需要最终用户身份验证。当Authentication Request中的prompt参数值为none时,可能会返回此错误,但如果没有显示最终用户身份验证的用户界面,则无法完成Authentication Request。

根据文档,用户似乎必须在同意页面上选择该选项:始终批准。你有这个选项测试过吗?

文档:https://docs.wso2.com/display/IS530/Basic+Client+Profile+with+Playground

  

点击批准以同意此操作。屏幕提到   服务提供商按名称和用户同意提供的请求   用户信息到该特定服务提供商。用户可以   要么拒绝,要向服务提供商提供信息。批准   仅为此服务提供商提供用户配置文件信息   这次。

     

批准始终以提供共享用户个人资料的批准   即使在将来没有服务提供商的信息   再次促使同意。