IdentityServer4如何在授权代码流

时间:2018-04-23 11:08:30

标签: access-token identityserver4

我正在寻找使用IdentityServer4自动化代码流的最佳方法。

我的应用程序系统非常普通:我有一个MVC客户端,一个WebAPI和IS。我还使用AJAX从客户端请求API。所以我需要客户端的访问令牌将其放入授权头。

将访问令牌存储在Cookie中是个好主意吗?

我是否需要自包含或引用令牌(我认为这与安全性有关)?

过期时续订的最佳方法是什么?

我想到了两个策略:

  1. 收到第一个401状态代码时更新访问令牌。可能是问题导致我向API发送了多个查询,我需要同步它们并召回第一个(以获得结果);
  2. 每次API调用之前,都会使用GetTokenAsync调用MVC客户端方法,检查过期时间并获取或更新并获取访问令牌。似乎作弊,因为每当我想调用API时我都需要调用MVC客户端。
  3. 你能帮我找到最好的方法吗?

1 个答案:

答案 0 :(得分:0)

“将访问令牌存储在cookie中是个好主意吗?”

否,不包括授权码流程。如果您使用的是MVC的Web应用程序,你应该找到某种来自浏览器的数据存储离开的方式来存储令牌。所有MVC应用程序应该管理的是一个cookie,以访问将来的MVC端点(它将使用数据存储区中的相应访问令牌对Identity Server进行后续调用)。

“我是否需要自包含或参考令牌(我想这是关于安全性的?)”

这完全取决于您,您认为最适合您的用例。如果您想查看访问令牌中的信息,并跳过多余的后端调用进行验证,请使用参考令牌。策略2要求您使用独立的令牌,以便您检查到期时间。

“您能帮我找到最好的方法吗?

我不知道我能否给出“最佳”方法,但我可能会选择策略2并使用自包含令牌。

编辑:如果您想使用“ axios,从API中获取数据”,那么我建议您使用没有刷新令牌概念的隐式流。在这种情况下,可以将其保留在Cookie中。