OpenID Connect - Javascript 应用程序的隐式流程使用 JWT 通过 REST API 进行身份验证

OpenID Connect - Implicit Flow with Javascript app using JWT to authenticate with a REST API

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

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

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

这是否意味着隐式流不适合我的用例,还是我遗漏了什么?

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

使用 OpenID Connect,您的身份验证请求必须在 response_type 参数中包含 id_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 令牌。该令牌意味着它还会 return 你一个访问令牌,这是你用来访问你的 REST api.