在您的 API 中实施令牌验证
要为您的 API 实现令牌验证支持,最简便的方法是克隆 openiddict-samples 仓库 中的一个官方示例。
如果您不想从推荐的示例开始,您需要做的是:
引用
OpenIddict.AspNetCore
包:<PackageReference Include="OpenIddict.AspNetCore" Version="5.6.0" />
在
Startup.ConfigureServices
中配置 OpenIddict 验证服务:services.AddOpenIddict() // 注册 OpenIddict 验证组件 .AddValidation(options => { // 从本地 OpenIddict 服务器实例导入配置 options.UseLocalServer(); // 注册 ASP.NET Core 主机 options.UseAspNetCore(); });
services.AddOpenIddict() .AddServer(options => { // 注册加密凭证。此示例使用一个对称加密密钥,该密钥在服务器和API项目之间共享. // // 注意:在实际应用中,此加密密钥应存储在一个安全的地方 // (例如,存储在Azure KeyVault中作为密钥). options.AddEncryptionKey(new SymmetricSecurityKey( Convert.FromBase64String("DRjd/GnduI3Efzen9V9BvbNUfc/VKgXltV7Kbk9sMkY="))); // 注册签名证书 options.AddDevelopmentSigningCertificate(); });
services.AddOpenIddict() .AddValidation(options => { // 注意:验证处理器使用OpenID Connect发现机制来检索用于验证令牌的发行者签名密钥. options.SetIssuer("https://localhost:44319/"); // 注册加密凭据。此示例使用对称加密密钥,该密钥在服务器与API项目之间共享 // // 注意:在实际应用中,此加密密钥应当存储在一个安全的地方 // (例如,在Azure KeyVault中,作为秘密存储) options.AddEncryptionKey(new SymmetricSecurityKey( Convert.FromBase64String("DRjd/GnduI3Efzen9V9BvbNUfc/VKgXltV7Kbk9sMkY="))); // 注册 System.Net.Http 集成 options.UseSystemNetHttp(); // 注册ASP.NET Core主机 options.UseAspNetCore(); });