我正在开发一个Javascript app + REST API。
我希望用户通过OpenID Connect Provider对应用程序(和底层REST API)进行身份验证,以实现SSO目的。
使用隐式流我可以获得一个ID令牌(JWT)来识别我的javascript应用程序的用户。我希望我可以在Authorize标头中发送此JWT,以请求我的REST API对用户进行身份验证。然而,这种方法的问题在于' aud' JWT的领域不适用于REST API服务器,它适用于javascript应用程序。
这是否意味着隐式流不适合我的用例,或者我错过了什么?
答案 0 :(得分:8)
Implicit Flow专为不受信任的客户端(例如JavaScript)设计,以获取身份以及(可选)访问令牌。
使用OpenID Connect,您的身份验证请求必须在response_type参数中包含id_token,但它也可以在参数中包含令牌。请参阅规范(http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthRequest)
中的3.2.2.1e.g。
GET /authorize?
response_type=id_token%20token
&client_id=s6BhdRkqt3
&redirect_uri=https%3A%2F%2Fclient.example.org%2Fcb
&scope=openid%20profile
&state=af0ifjsldkj
&nonce=n-0S6_WzA2Mj HTTP/1.1
Host: server.example.com
id_token意味着您将获得您提到的ID令牌。令牌意味着它还会返回一个访问令牌,这是您用来访问REST API的权限。