IdentityServer4深入使用(六)-- 详解资源与客户端的配置

原文地址: https://www.jeremyjone.com/835/,转载请注明。


前面已经写过完整的流程。今天分享一下客户端的配置。

开始之前

更多内容,可以查看我的文档:.NET 学习之路-认证中心的配置

正文开始

IdentityServer 中,需要我们进行配置的内容,大体分成:IdentityResourceApiScopeApiResourceClient,它们都是在 IdentityServer4.Models 中定义的。

我们在创建一个 Ids 服务之后,也要首先进行配置初始数据(之前写过的 Config.cs),也就是配置这些内容。

今天要详细梳理一下这些配置,因为它们尤为重要。我们按照官方示例依次梳理:

public static IEnumerable<IdentityResource> IdentityResources => new IdentityResource[] {
   };

public static IEnumerable<ApiScope> ApiScopes => new ApiScope[] {
   };

public static IEnumerable<ApiResource> ApiResources => new ApiResource[] {
   };

public static IEnumerable<Client> Clients => new Client[] {
   };

IdentityResource

IdentityResource 是预定义的用户身份资源,它包含一些用户的基本信息,如:个人信息、地址、电话号码、邮箱等。

通常,OpenIdProfile 是一定给出的,尤其是 OpenId,默认就是强制使用,用户无法取消选择。因为没有这两项信息,就无法确定是哪个用户,而且这些信息本身就是公开的。其余都是可以选项,也都可以调整。

IdentityResource 的作用

IdentityResource 用于确认用户身份,它所包含的内容通常会在 id_token 中,主要是允许哪些资源(claim)可以添加到 id_token 中。尤其是当需要一些自定义授权权限时,这些是必要且灵活的选择。

创建 IdentityResource 内容
public static IEnumerable<IdentityResource> IdentityResources =>
    new IdentityResource[]
    {
   
        new IdentityResources.OpenId(),
        new IdentityResources.Profile(),
        new IdentityResources.Email(),
        new IdentityResources.Phone(),
        new IdentityResources.Address()
    };
自定义 IdentityResource 内容

这些是预定义好的五项内容,我们还可以通过自定义的方式进行内容的增加:

new IdentityResource("roles", "角色信息", new List<string> {
   JwtClaimTypes.Role})

这些身份信息读取用户的 Claim,将其放入 token 中,我们得到的 token 中就会包含这些信息,从而达到获取用户信息的目的。

比如:我们查看预定义的 new IdentityResources.Email() 源码,就会看到其内部已经填写好 JwtClaimTypes.EmailJwtClaimType.EmailVerified 两个 claim。当我们的客户端配置了 Email 资源时,获取到的 token 中就会包含这两个 claim。

修改 IdentityResource 内容

框架给我提供了非常方便好用的扩展空间,通过构造函数就可以替换掉我们不希望的内容:

new IdentityResources.Email
{
   
    //Name = IdentityServerConstants.StandardScopes.Email,
    DisplayName = "您的邮箱",
    Description = "您的邮箱地址",
    Required = true,
    //Emphasize = true,
    UserClaims = new List<string>{
    IdentityServerConstants.StandardScopes.Email }
}

这样配置之后,它将显示为中文而不是默认的英文内容,并且它是必须项,用户无法取消选择,同时在获取到的 token 中也没有了默认的 EmailVerified 项。

file

file

IdentityResource 的参数
  • Enabled

否启用了该资源并且可以请求该资源。默认为 true。

    • 1
      点赞
    • 5
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值