假设我有一个使用IdenityServer3保护的网站。它使用隐式流,因此要求用户提供其凭据。现在,我面临一个要求,即此应用程序应代表用户访问多个(Web)API。这些API使用角色进行保护。
我该如何解决这个问题?通过添加" token"我是否为所有人获得了一个access_token?到OpenIdConnectAuthenticationOptions的ResponseType?我是否必须更改隐式流(到混合?)并手动为每个API请求access_tokens,并在认证后将其添加到用户的声明中?
我不确定如何处理这个问题。任何帮助将不胜感激。
答案 0 :(得分:0)
您可以继续使用隐式流并添加"令牌" to reponse_type(因此它变为" id_token标记")。这也将为您提供访问令牌。此外,您可以指定这些API可能需要的任何范围,以便包含可能必须存在的API Authorize属性的声明,以允许通过。
在您的应用程序中获得IdentityServer的响应以及访问令牌后,您可以在Authorization标头中使用该令牌调用api。
答案 1 :(得分:0)
我能够通过转移到混合流程来解决我的需求。对于响应类型,我最终需要“id_token”,“token”和“code”。我还必须在单独的请求中手动检索用户声明并手动将它们添加到用户的身份,因为除了“id_token”之外添加“token”将从服务器响应中删除所有声明(以保持令牌更小)。