【发布时间】:2019-05-25 02:15:49
【问题描述】:
我有 ASP.NET Web 应用程序,并且正在使用 IdentityServer3 进行用户身份验证。我们的客户使用用户名/密码登录 Web 应用程序。 现在我多了一个 Web API,我们的一些客户需要从他们的应用程序中调用这个 Web API。 (服务器到服务器通信)。所以基于this,在identityserver我做了以下
1> 创建了一个新的作用域名称api
2> 为 Web API 创建了一个新客户端并配置了允许的范围 api 和 offline_access
3> 设置流量为ClientCredentials
4> 将 AccessTokenType 设置为Jwt
5> 我为每个客户创建了不同的密钥
现在我们的客户可以在connect/token 端点获取访问令牌,然后使用访问令牌调用 API。 API 使用 IdentityServer 验证令牌,然后返回结果。一切都很好。
但是,在 API 项目中,我还需要识别 customer aka caller。根据客户我需要做一些逻辑
public class ResourcesController : ApiController
{
public IHttpActionResult Get()
{
var caller = User as ClaimsPrincipal;
// need to identify caller here
return Json(new
{
message = "OK",
});
}
}
(我能想到的一个选项是将客户 ID 作为 API url 的一部分。类似http://api.domain.com/v1/customerid/resources)
有没有办法利用 IdentityServer 来识别客户?
【问题讨论】:
标签: identityserver3