c# - OpenIddict:如何在资源服务器中注册签名密钥以验证令牌?
问题描述
我使用 OpenIddict。我想用对称密钥签署令牌。我已将授权服务器配置为使用 OpenIddict。这是启动文件中的代码。
services.AddOpenIddict()
.AddServer(options =>
{
options.SetTokenEndpointUris("/connect/token");
options.AllowPasswordFlow()
.AllowRefreshTokenFlow();
options.AcceptAnonymousClients();
options.AddDevelopmentEncryptionCertificate()
.AddDevelopmentSigningCertificate()
.DisableAccessTokenEncryption();
options.UseAspNetCore();
options.RegisterScopes(OpenIddictConstants.Scopes.OfflineAccess); //This is for grant_type=refresh_token.
options.EnableDegradedMode();
options.AddEventHandler<ValidateTokenRequestContext>(c => c.UseSingletonHandler<TokenRequestValidator>());
options.AddEventHandler<HandleTokenRequestContext>(c => c.UseSingletonHandler<TokenRequestHandler>());
var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("b14ca5898a4e4133bbce2ea2315a1916")); //this is for example
options.AddSigningKey(key);
});
当我从授权服务器收到令牌并调用资源服务器时,它会以 401 Unauthorized 响应。
这是资源服务器的启动文件中的代码。
services.AddOpenIddict().AddValidation(options =>
{
// Register the ASP.NET Core host.
options.UseAspNetCore();
options.UseSystemNetHttp();
options.SetIssuer("https://localhost:44340/");
});
请帮助我正确设置配置。
解决方案
如果要使用对称密钥进行令牌验证,则需要在 OpenIddict 验证选项中注册它,因为发现端点不会公开对称密钥。
services.AddOpenIddict()
.AddValidation(options =>
{
options.Configure(o => o.TokenValidationParameters.IssuerSigningKey = key);
});
推荐阅读
- javascript - onreadystatechane 函数未触发
- javascript - 用 Javascript 中的极小极大算法解决井字游戏
- r - 替代 R 中的 import() 包?
- sql-server - 无法从其他计算机连接到 SQL Server
- python - 包含其他信息时的出现次数
- javascript - 如何在 Postman 中的第二个请求之后运行请求
- scala - 有没有办法让akka的mapAsync中的函数超时?
- r - 如何使用不同的“geom_line”添加第二个图例?
- database - 仅使用数据库事务可以防止 REST API 中的丢失更新问题吗?
- javascript - 如何为 scss 样式文件添加前缀?