【问题标题】:dotnet core IdentityModel will not introspect tokensdotnet core IdentityModel 不会自省令牌
【发布时间】:2018-11-08 05:40:50
【问题描述】:

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

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

我的 API 的工作原理是它从调用者那里以不记名令牌的形式接收身份验证标头。然后我Introspect该令牌以验证它对于当前任务是可接受的,并继续执行主要逻辑。

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

接下来,我有一些来自我的Startup.cs 的 sn-ps 和一个控制器。

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 选项,并允许发现自省端点(我想也许我的 OIDC 服务器可能不支持发现,这是导致问题的原因,但提供自省端点并没有区别)

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

【问题讨论】:

    标签: c# .net-core thinktecture-ident-model


    【解决方案1】:

    即使这个答案来晚了,我想问一下您是否尝试过将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;
        });
    

    【讨论】:

    • 有没有人能够得到这个工作?我遇到了同样的问题。令牌是从第三方 IDaaS 服务发行的。我们的 IntrospectionEndpoint 地址是正确的,客户端 ID 和客户端密钥(以及我们传递的令牌)也是正确的。很难弄清楚为什么这不起作用。
    猜你喜欢
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2021-12-09
    • 2022-01-06
    • 2020-02-05
    • 2020-07-20
    • 1970-01-01
    • 2021-04-25
    相关资源
    最近更新 更多