您好我有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
答案 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
点击批准以同意此操作。屏幕提到 服务提供商按名称和用户同意提供的请求 用户信息到该特定服务提供商。用户可以 要么拒绝,要向服务提供商提供信息。批准 仅为此服务提供商提供用户配置文件信息 这次。
批准始终以提供共享用户个人资料的批准 即使在将来没有服务提供商的信息 再次促使同意。