使用 ASOS 访问令牌中的自定义用户数据

Custom user data in access token with ASOS

我正在尝试使用 AspNet.Security.OpenIdConnect.Server 来实现 OpenID Connect 服务器。

是否可以在授权服务器颁发令牌时将一些自定义用户数据放入访问令牌,然后在令牌验证和请求处理期间在资源服务器检索它?

示例: 我想将用户用于获取令牌的 IP 地址写入访问令牌。然后在资源服务器上,我想在令牌验证期间比较当前用户的 IP 地址和来自令牌的 IP 地址。

另一个例子:我想将用户的角色写入令牌,然后在 WebApi 操作过滤器或操作本身中检索它们

考虑简单地将 IP 地址存储为声明:

identity.AddClaim("ip_addr", HttpContext.Connection.RemoteIpAddress.ToString(),
    OpenIdConnectConstants.Destinations.AccessToken);

然后,在您的 API 控制器中,使用以下方法检索它:

var address = User.FindFirst("ip_addr").Value;