IdentityServer4简单入门demo系列 (一)认证服务端
目录
一、认证服务端
二、API资源端
三、调用客户端
详细步骤
一、认证服务端
1、新建一个名为“CertifiedCenter”的 asp.net core web应用程序,如下图
2、添加IdentityServer4的2个引用 IdentityServer4 和 IdentityServer4.AccessTokenValidation,如下图:
3、添加Config.cs类,如下图:
Config.cs的内容如下:
using IdentityServer4.Models; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace CertifiedCenter { public class Config { public static IEnumerable<ApiResource> GetApiResources() { return new List<ApiResource> { //参数是资源名称,资源显示名称 new ApiResource("api1", "api1") }; } public static IEnumerable<Client> GetClients() { return new List<Client> { new Client { ClientId = "clientId", AllowedGrantTypes = GrantTypes.ClientCredentials, // 用于验证的secret ClientSecrets = { new Secret("123456".Sha256()) }, // 允许的范围 AllowedScopes = { "api1" } } }; } } }
4、添加代码到Startup.cs,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.HttpsPolicy; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; namespace CertifiedCenter { public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddIdentityServer() //设置临时签名凭据 .AddDeveloperSigningCredential() //从Config类里面读取刚刚定义的Api资源 .AddInMemoryApiResources(Config.GetApiResources()) //从Config类里面读取刚刚定义的Client集合 .AddInMemoryClients(Config.GetClients()); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); }
//app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); app.UseIdentityServer(); } } }
5、最后一步,修改端口号,把端口改为5000,如下图
明天做 API资源端的Demo
分类:
IdentityServer
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?