4

我正在开发一个 Javascript 应用程序 + REST API。

我希望用户通过 OpenID Connect Provider 对应用程序(和底层 REST API)进行身份验证,以实现 SSO 目的。

使用隐式流程,我可以获得一个 ID 令牌 (JWT),用于识别我的 javascript 应用程序的用户。我希望我可以在向我的 REST API 的请求中的 Authorize 标头中发送这个 JWT 以对用户进行身份验证。但是,这种方法的问题在于 JWT 的“aud”字段不会用于 REST API 服务器,而是用于 javascript 应用程序。

这是否意味着隐式流程不适合我的用例,或者我错过了什么?

4

1 回答 1

8

隐式流程是为不受信任的客户端(例如 JavaScript)设计的,以获取身份和(可选)访问令牌。

使用 OpenID Connect,您的身份验证请求必须在 response_type 参数中包含 id_token,但它也可以在参数中包含 token。请参阅规范中的 3.2.2.1 ( http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthRequest )

例如

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。

于 2015-03-20T13:10:10.093 回答