gpt4 book ai didi

c# - dotnet core IdentityModel 不会自省(introspection) token

转载 作者:行者123 更新时间:2023-11-30 16:40:43 24 4
gpt4 key购买 nike

我正在尝试将我的一个 API 应用程序移植到 dotnet core (v2),而升级中最重要的部分可能是让我的身份验证正常工作。

为此,我已将 Thinkteture 的 IdentityModel 包添加到我的项目中。

我的 API 的工作原理是它从调用者那里接收到不记名 token 形式的身份验证 header 。然后我内省(introspection)该 token 以验证它对于当前任务是可接受的,然后继续执行主要逻辑。

但是,我似乎只是在代码的初始设置中遗漏了一些绝对基本的东西,因为我根本无法触发内省(introspection)。

接下来,我有一些来 self 的 Startup.cs 的片段和一个 Controller 。

Startup.cs

   public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddAuthentication(OAuth2IntrospectionDefaults.AuthenticationScheme)
.AddOAuth2Introspection(options =>
{
options.IntrospectionEndpoint = "#REDACTED#";

options.ClientId = "#REDACTED#";
options.ClientSecret = "#REDACTED#";

});
var x = 1;

}

ItemsController.cs

    [HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "isAuthenticated", $"{User.Identity.IsAuthenticated}" };
}

此端点 (GET api/items) 始终返回 false,我的 OIDC 服务器应用程序从不记录任何与之通信的尝试。在 services.AddAuthentication() 代码上设置的断点会捕获,因此我知道基本设置部分已经就位。

我尝试过的其他一些事情:

  • 在方法上放置一个 Authorize 修饰符(没想到它会起作用……但它并没有起作用)
  • 使用 Authority 选项,并允许发现内省(introspection)端点(我想也许我的 OIDC 服务器可能不支持发现,这导致了问题,但提供了内省(introspection)端点没有任何区别)

我确定我错过了一些完全微不足道的东西,但在花了几个小时戳、搜索和尝试各种东西之后,我意识到我一定是忽略了它。

最佳答案

即使这个答案来晚了,我还是想问问您是否尝试过将 SkipTokensWithDots 设置为 false

对我有用的是:

services.AddAuthentication(OAuth2IntrospectionDefaults.AuthenticationScheme)
.AddOAuth2Introspection(options =>
{
options.IntrospectionEndpoint = "#REDACTED#";

options.ClientId = "#REDACTED#";
options.ClientSecret = "#REDACTED#";

// We are using introspection for JWTs so we need to override the default
options.SkipTokensWithDots = false;
});

关于c# - dotnet core IdentityModel 不会自省(introspection) token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50586518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com