如何使用 'id_token'、'access_token'、expiry 等直接创建 userManager?

Posted

技术标签:

【中文标题】如何使用 \'id_token\'、\'access_token\'、expiry 等直接创建 userManager?【英文标题】:How can create userManager directly with 'id_token', 'access_token', expiry etc.?如何使用 'id_token'、'access_token'、expiry 等直接创建 userManager? 【发布时间】:2021-12-23 19:40:36 【问题描述】:

在我的 Angular 应用程序中,我使用了 oidc-client.js 库。以前,一切都很好,因为我已经配置了所有最少的必填字段,如下所示

      "resourceUrl": "//xxxxx.abc.net",
      "clientId": "cdgdsg335",
      "authority": "//xyz.com/A1",
      "response_type": "id_token token",
      "response_mode": "query",
      "scope": "openid email profile",
      "automaticSilentRenew": false,
      "silent_renew_url": "/silent-renew.html",
      "redirect_url": "/auth-callback",
      "post_logout_redirect_url": "/login"

但是现在,后端提供了直接api(/token)来获取id_token,access_token和刷新令牌,而不是使用授权url重定向到认证站点并通过重定向调用获取令牌。那么,我该如何配置用户使用 userManager 而不使用 signinRedirect() 和 signinRedirectCallback()。 请帮我解决这个问题?

我尝试调整 userManager.settings 但没有成功

【问题讨论】:

【参考方案1】:

oidc-client 库仅用于 javascript 流,您需要使用后端作为前端方法来按照您的建议进行操作。

这是一些仅使用 API 调用的 sample code for an SPA - 正如您所看到的代码已简化 - 还有一个 related article。

通过 API 进行 SPA 安全性是一种更安全的解决方案,虽然有点棘手 - 但上述资源将展示如何做到这一点。

【讨论】:

以上是关于如何使用 'id_token'、'access_token'、expiry 等直接创建 userManager?的主要内容,如果未能解决你的问题,请参考以下文章

如何验证 Azure 活动目录中刷新的 id_token 的签名

Python 如何从使用 oauthlib 的帐户身份验证获取 ID_Token 以与 Open ID Connect 一起使用

如何使用 id_token 从 Azure Function 应用程序获取 Azure access_token?

如何在 Postman 的 Oauth2 中使用 id_token 而不是 access_token?

Google OpenID Connect:如何验证 id_token?

如何验证 Microsoft jwt id_token?