asp.net-core - 我可以使用 2 个不同的令牌身份验证中间件创建 Identity Server 4 ASP.NET Core API 吗?
问题描述
我试图弄清楚是否可以根据我配置的身份服务器使用的任何内容来编写一个使用引用令牌或 JWT 令牌来使用身份服务器令牌的 ASP.NET Core API。IS4 的后端配置非常简单,我只是不相信我可以配置 2 个不同的令牌中间件并且我的服务都可以接受它并且知道该怎么做。
所以这个想法是:
- 如果我的 API 获得 jwtToken,它会尝试使用 jwt 中间件来授权回身份服务器。
- 如果我的 API 获得参考令牌,它会尝试使用自省中间件来授权回身份服务器。
显然,如果为 IS4 服务上配置的任何内容提供了错误类型的令牌,它将失败。
处理令牌端点和撤销端点也应该很容易,这只是我关心的中间件魔术。
我知道通常你不想这样做,但我们有一个利基用例。我目前关心的是它是否可能。我不熟悉 auth 中间件在后端的工作方式。
解决方案
根据Identity Server 4 Protecting APIs 文档,我们可以看到它支持在 asp.net 核心中同时使用 JWT 和引用令牌。
您可以设置 ASP.NET Core 以根据传入的令牌分派到正确的处理程序,有关详细信息,请参阅此博客文章。
services.AddAuthentication("token")
// JWT tokens
.AddJwtBearer("token", options =>
{
options.Authority = Constants.Authority;
options.Audience = "resource1";
options.TokenValidationParameters.ValidTypes = new[] { "at+jwt" };
// if token does not contain a dot, it is a reference token
options.ForwardDefaultSelector = Selector.ForwardReferenceToken("introspection");
})
// reference tokens
.AddOAuth2Introspection("introspection", options =>
{
options.Authority = Constants.Authority;
options.ClientId = "resource1";
options.ClientSecret = "secret";
});
推荐阅读
- cron - Why does Successful execution of Cron job stops further appending of log onto a file
- jmeter - Using jmeter to place messages on google-cloud pubsub
- c# - Fortify: Null Dereference
- php - .htaccess - 递归地将斜杠映射到下划线(内部重定向)
- anylogic - Looking for an example to execute milkrun in last mile
- python - How to get phonemes from Google Cloud API Text-to-Speech
- html - 引导程序 4 中的表格列宽
- sublimetext3 - Sublime text3: /bin/sh: sac: command not found
- c++ - poll() method not working in Linux but working in Mac
- python - 关于python中定义while循环的空列表的问题