来源:https://docs.duendesoftware.com/
源码:https://gitee.com/XiaoJie230/blazorweb--identityserver.git
1.安装官方模板
dotnet new --install Duende.IdentityServer.Templates
2.生成一个标识服务器项目
首先创建一个解决方案
dotnet new isempty -n IdentityServer
定义API范围和绑定客户端
配置身份服务器
该模板添加了一些快速入门中未使用的内容 这边暂时无需改动 按照官方改动
修改后进入调试 进入https://localhost:5001/.well-known/openid-configuration
返回结果如图
注:首次启动时,IdentityServer 将使用其自动密钥管理功能创建签名密钥并将其存储在 keys 文件夹中。为避免意外泄露加密机密,应从源代码管理中排除整个 Keys 文件夹。如果不存在,将重新创建它。
3.创建一个WebAPI
创建一个WebApi,并且添加Nuget: Microsoft.AspNetCore.Authentication.JwtBearer
将 WT持有者身份验证服务添加到服务集合以允许依赖关系注入
在授权之前立即将身份验证中间件添加到管道中:
添加控制器
添加一个名为 IdentityController 控制器:
把映射地址改成https://localhost:6001
测试控制器
运行 API 项目,然后在浏览器中导航到标识控制器 https://localhost:6001/identity。这应该返回 401 状态代码,这意味着您的 API 需要凭据,现在受 IdentityServer 保护。
4:创建客户端项目
创建一个控制器项目
安装Nuget管理包
在program中填写内容
using IdentityModel.Client; using System.Text.Json; var client = new HttpClient(); //对来自OpenID Connect发现端点的响应进行建模 var disco = await client.GetDiscoveryDocumentAsync("https://localhost:5001"); if (disco.IsError) { Console.WriteLine("出现异常错误,原因" + disco.Error); return; } #region 从 IdentityServer 请求令牌 var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest { //和IdentityServer下的Config的配置端口一直 Address = disco.TokenEndpoint, ClientId = "client", ClientSecret = "secret", Scope = "api1" }); if (tokenResponse.IsError) { Console.WriteLine(tokenResponse.Error); return; } Console.WriteLine(tokenResponse.AccessToken); #endregion 从 IdentityServer 请求令牌 #region 调用接口 // call api var apiClient = new HttpClient(); apiClient.SetBearerToken(tokenResponse.AccessToken); var response = await apiClient.GetAsync("https://localhost:6001/identity"); if (!response.IsSuccessStatusCode) { Console.WriteLine(response.StatusCode); } else { var doc = JsonDocument.Parse(await response.Content.ReadAsStringAsync()).RootElement; Console.WriteLine(JsonSerializer.Serialize(doc, new JsonSerializerOptions { WriteIndented = true })); } #endregion 调用接口
效果展示
本文来自博客园,作者:Sleepy-Person,转载请注明原文链接:https://www.cnblogs.com/Sleepy-Person/p/16184428.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!