IdentityServer4多个API访问,单个令牌

时间:2018-01-05 00:02:44

标签: identityserver4

我们有几个API,我们希望通过客户端凭据流授予客户端访问权限。流程会像这样。

  1. 客户端根据某个范围从is4获取令牌
  2. 客户端使用令牌
  3. 命中第一个API
  4. 客户需要使用相同的令牌命中第二个API。
  5. API端点处的令牌授权似乎仅在APIResource与身份验证参数中的APIName匹配时才有效。

    如何设置APIResource / Scopes以便适应这种情况?

1 个答案:

答案 0 :(得分:3)

好的,我有机会对你的情况有所帮助并找到解决方案。

因此,正如您所知,客户端凭据流程基于(除了clientid和客户端密钥)ApiResoirces / Scopes。

您的API在其身份验证配置中具有:

  • ApiName - 适用于.NET Core API
  • RequiredScopes - 适用于.NET Framework API

根据您的情况,您必须设置它们。

这些是您的IDS客户端应具有的APIResources / Scopes,在其允许的范围/ api资源(Client.AllowedScopes)中。

然后,在从令牌客户端请求客户端凭据时,您应该作为范围传递一个字符串,其中包含以interval(tokenClient.RequestClientCredentialsAsync("api1 api2");

分隔的两个范围/ apiresources

然后,您在回复中收到的访问令牌对您的两个api的呼叫都有效。

您还有第二个选项,其中您的api使用同一个范围/ apiresource,但我认为这根本不是一个好方法。