• IdentityServer4密码模式


    书接上文。

    做完了客户端模式来做密码模式。

    密码模式需要用户和密码。

    现在Config里面添加个方法

     public static List<TestUser> GetUsers()
            {
                return new List<TestUser>()
            {
                new TestUser()
                {
                    //用户名
                     Username="apiUser",
                     //密码
                     Password="apiUserPassword",
                     //用户Id
                     SubjectId="0",
                     //在IdentityServer4中,TestUser有一个Claims属性,允许自已添加Claim,有一个ClaimTypes枚举列出了可以直接添加的Claim 同时需要在ApiResouce的构造函数有一个重载支持传进一个Claim集合,用于允许该Api资源可以携带那些Claim
                     Claims=new List<Claim>(){
                         new Claim(ClaimTypes.Role,"admin")
                     }
                }
            };
            }
    

      Clients方法里面增加一个客户端变成这样

    public static IEnumerable<Client> Clients =>
                new Client[]
                { 
                    //1:客户端模式
                new Client
                {
                    ClientId = "apiClientCd",
                    ClientName = "Client Credentials Client",
    
                    AllowedGrantTypes = GrantTypes.ClientCredentials,
                    ClientSecrets = { new Secret("apiSecret".Sha256()) },
    
                    AllowedScopes = { "secretapi" }
                },
                //密码模式
                 new Client()
                    {
                        //客户端Id
                         ClientId="apiClientPassword",
                         //客户端密码
                         ClientSecrets={new Secret("apiSecret".Sha256()) },
                         //客户端授权类型,ClientCredentials:客户端凭证方式
                         AllowedGrantTypes=GrantTypes.ResourceOwnerPassword,
                         //允许访问的资源
                         AllowedScopes={
                            "secretapi"
                        }
                    }
                };

    在StartUp.cs里面增加一个 builder.AddTestUsers(Config.GetUsers()),表示验证用户。

    API项目不变

    然后用postman请求,此时注意,需要加两个参数,用户名和密码,就是你增加的用户名和密码

     复制这个token依然能够访问你的资源。

  • 相关阅读:
    EF 事务
    关于C#如何将Word转换成PDF的方法汇总
    莫德纳公司
    C# 填充pdf 模板生成报告
    自定义滚动条的样式
    Docker 大势已去,Podman 即将崛起……
    一款基于 Spring Boot 开发的 OA 项目,已开源,真香..
    当你运行npm run命令时,会发生什么?
    Java遇上SPL:架构优势和开发效率,一个不放过
    如何使用Python实现图像融合及加法运算?
  • 原文地址:https://www.cnblogs.com/fanlin92/p/15219974.html
Copyright © 2020-2023  润新知