首页 > 编程语言 >ASP.NET IdentityServer4

ASP.NET IdentityServer4

时间:2024-12-16 10:42:54浏览次数:3  
标签:WebApi ASP StandardScopes List IdentityServerConstants new NET public IdentitySe

    public class Config
    {

        /// <summary>
        /// 微服务API资源
        /// </summary>
        /// <returns></returns>
        public static IEnumerable<ApiResource> GetApiResources()
        {
            return new List<ApiResource>
            {
                new ApiResource("WebApi", "ChuanGoingWebApi"),
                new ApiResource("ProductApi", "ChuanGoingWebProduct")
            };
        }

        /// <summary>
        /// OpenID Connect相关认证信息配置
        /// </summary>
        /// <returns></returns>
        public static IEnumerable<IdentityResource> GetIdentityResources()
        {
            return new List<IdentityResource>
            {
                new IdentityResources.OpenId(),
                new IdentityResources.Profile()
            };
        }

        /// <summary>
        /// 客户端信息配置
        /// </summary>
        /// <returns></returns>
        public static IEnumerable<Client> GetClients(IConfiguration Configuration)
        {
            var OnlineConfig = Configuration.GetSection("OnlineClient");
            var List = new List<Client>
            {
                //简单模式
                new Client()
                {
                    ClientId = "ClientCredentials",
                    ClientName = "ClientCredentials",
                    ClientSecrets = { new Secret("ClientSecret".Sha256()) },
                    AllowedGrantTypes = GrantTypes.ClientCredentials,
                    AllowedScopes =
                    {
                        IdentityServerConstants.StandardScopes.OpenId,
                        IdentityServerConstants.StandardScopes.Profile,
                        "WebApi",
                        "ProductApi"
                    },
                    AccessTokenLifetime = 10 * 60 * 1
                },
                //账号密码模式
                new Client()
                {
                    ClientId = "ResourceOwnerPassword",
                    ClientName = "ResourceOwnerPassword",
                    ClientSecrets = { new Secret("ClientSecret".Sha256()) },
                    AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
                    AllowedScopes =
                    {
                        IdentityServerConstants.StandardScopes.OpenId,
                        IdentityServerConstants.StandardScopes.Profile,
                        "WebApi",
                        "ProductApi"
                    },
                    AccessTokenLifetime = 10 * 60 * 1
                },
                  /*
                  隐式模式:https://localhost:6005/connect/authorize?client_id=Implicit&redirect_uri=http://localhost:5000/Home&response_type=token&scope=WebApi
                  */
                new Client()
                {
                    ClientId = "Implicit",
                    ClientSecrets = { new Secret("ImplicitSecret".Sha256()) },
                    ClientName = "ImplicitClient",
                    AllowedGrantTypes = GrantTypes.Implicit,
                    //RedirectUris ={OnlineConfig.GetValue<string>("RedirectUris") },
                    //PostLogoutRedirectUris = {OnlineConfig.GetValue<string>("LogoutRedirectUris") },
                    AllowedScopes =
                    {
                        IdentityServerConstants.StandardScopes.OpenId,
                        IdentityServerConstants.StandardScopes.Profile,
                        "WebApi",
                        "ProductApi"
                    },
                    AccessTokenLifetime = 10 * 60 * 1,
                    //允许将token通过浏览器传递
                     AllowAccessTokensViaBrowser=true
                },
                /*
                 * 授权码模式:https://localhost:6005/connect/authorize?client_id=GrantCode&redirect_uri=http://localhost:5000/Home&response_type=code&scope=WebApi
                 */
                new Client()
                {
                   //客户端Id
                    ClientId="GrantCode",
                    ClientName="GrantCodeClient",
                    //客户端密码
                    ClientSecrets={new Secret("CodeSecret".Sha256()) },
                    //客户端授权类型,Code:授权码模式
                    AllowedGrantTypes=GrantTypes.Code,
                    //允许登录后重定向的地址列表,可以有多个
                     RedirectUris ={OnlineConfig.GetValue<string>("RedirectUris") }, 
                    //允许访问的资源
                    AllowedScopes={"WebApi", "ProductApi"}
                }
            };
            return List;
        }

        public static List<TestUser> GetUsers()
        {
            return new List<TestUser>
            {
                new TestUser
                {
                    SubjectId = Guid.NewGuid().ToString(),
                    Username = "admin",
                    Password = "123456"

                    //Claims = new List<Claim>
                    //{
                    //    new Claim("name", "admin"),
                    //    new Claim("website", "https://www.cnblogs.com/chuangoing")
                    //}
                },
                new TestUser
                {
                    SubjectId = Guid.NewGuid().ToString(),
                    Username = "chuangoing",
                    Password = "123456"

                    //Claims = new List<Claim>
                    //{
                    //    new Claim("name", "chuangoing"),
                    //    new Claim("website", "https://github.com/chuangoing")
                    //}
                }
            };
        }
    }
}

 

标签:WebApi,ASP,StandardScopes,List,IdentityServerConstants,new,NET,public,IdentitySe
From: https://www.cnblogs.com/xm123/p/18609501

相关文章

  • .NET8升级.NET9,CodeFirst模式迁移Add-Migration执行Update-DataBase报错
    在做netcore开发时,如果net8一直是正常的,只升级了一下框架net9,在使用EntityFrameworkCore的CodeFirst模式进行迁移时,执行Add-Migration后尝试使用Update-DataBase时出现了如下错误。Unhandledexception.System.InvalidOperationException:Anerrorwasgeneratedforwarni......
  • .Net_比对Json文件是否一致
    简介该方法用于比较两个Json文件是否完全一致,仅考虑内容若两个文件中的内容只是顺序不一致,内容是一样的,那么也代表这两个文件是相等的实现代码调用usingCompareJsonFiles;Console.WriteLine("=================输入信息===================");Console.WriteLi......
  • 深度Q网络(Deep Q-Network, DQN)详解
    ✅作者简介:2022年博客新星第八。热爱国学的Java后端开发者,修心和技术同步精进。......
  • Ubuntu 22.04 部署 Kubernetes v1.30
    1Shell工具xshell免费版,工具菜单下可选,同时控制所有的会话,后面不同节点安装Kubernetes会提高效率2节点规划Linux为UbuntuServer22.04,下载地址https://ubuntu.com/download/server域名IP资源节点名k8s-master192.168.0.1508C16Gk8s-masterk8s-node1......
  • C#/.NET/.NET Core 学习、工作、面试指南
    现如今网上关于Java、前端、Android、Golang...等相关技术的学习资料、工作心得、面试指南一搜都是一大把,但是咱们C#/.NET的相关学习资料、工作心得、面试指南都是寥寥无几。我在微信技术群、知乎里面经常会看到这样的提问:有没有好的C#/.NET相关的学习书籍、视频教程、项目框架和......
  • 配置.NET Web应用使用自定义证书实现Https访问,支持Linux
    1.配置在appsettings.json增加下面配置:"Kestrel":{"Endpoints":{"Https":{"Url":"https://*:34038","Certificate":{"Path":"CloudFlare_Origin_Ce......
  • Caused by_ net.sf.jsqlparser.parser.ParseException_ Encountered unexpected token
    问题:在xml里写完sql语句进行测试时抛出ParseException异常,如下:selectbasic.idas'id',frombasic_infobasic<iftest="request.behaveType!=null">innerjoinapply_infoapplyonapply.basic_info_id=basic.id&......
  • 论文阅读:Deep embedded clustering with distribution consistency preservation for
    论文地址:Deepembeddedclusteringwithdistributionconsistencypreservationforattributednetworks-ScienceDirect代码地址:https://github.com/Zhengymm/DCP1摘要许多现实世界中的复杂系统可以被表征为带属性的网络。为了挖掘这些网络中的潜在信息,近年来深度嵌入......
  • Kubernetes Service 详解:如何轻松管理集群中的服务
    KubernetesService详解:如何轻松管理集群中的服务在Kubernetes中,Service是一个非常核心的概念。它解决了容器之间的通信问题,确保了无论容器如何启动或销毁,服务都能保持稳定的访问方式。今天,我想通过一篇简单易懂的文章,带大家一起探讨一下Kubernetes中的Service,它的作用......
  • 数通初级#(1)TELNET、SSH、FTP实验
    一、实验拓扑下载拓扑地址:【免费】数通eNSP和VRP基础操作实验资源-CSDN文库二、telnet远程登录Telnet通常用在远程登录应用中,以便对本地或远端运行的网络设备进行配置。实验目标:使用PC1使用telnet远程登录SW12.1Telnet使用密码远程登录第一步:在SW1开启telnet远程登录......