【问题标题】:Thinktecture.Identity SAML token unauthorizedThinktecture.Identity SAML 令牌未经授权
【发布时间】:2023-03-31 21:18:01
【问题描述】:

我正在为 WebApiSecurity 使用 Thinktecture.IdentityModel 4.0 示例。我已修改 AdfsSamlClient 以使用我们的 ADFS 服务器。我可以使用

从 ADFS 服务器获取 SAML 令牌
        var channel = factory.CreateChannel();
        var token = channel.Issue(rst) as GenericXmlSecurityToken;

然后我尝试拨打服务电话

        var client = new HttpClient { BaseAddress = _baseAddress };
        client.DefaultRequestHeaders.Authorization = 
            new AuthenticationHeaderValue("AdfsSaml", saml);

        var response = client.GetAsync("identity").Result;

并获得 401 - 未授权呼叫。

我不确定如何调试它。我对 Microsoft.IdentityModel 进行了跟踪,但它只是信息级别的跟踪,没有错误或警告,也没有任何东西可以用来调试。

服务跟踪中有趣的部分:

1。 说明 OnEndRequest 被重定向到 IdentityProvider '/WebHost/api/identity' 2. 说明 CreateSignInRequest BaseUri https://[ADFS...]/adfs/ls/ wa wsignin1.0 wtrealm https://[WorkStation...]/WebHost/ wctx rm=0&id=passive&ru=%2fWebHost%2fapi%2fidentity 3. 重定向到 IdentityProvider 的说明:'https://[ADFS...]/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2f[WorkStation...]%2fWebHost%2f&wctx=rm%3d0% 26id%3dpassive%26ru%3d%252fWebHost%252fapi%252fidentity&wct=2013-09-30T17%3a35%3a04Z'

感谢您的任何见解。

【问题讨论】:

    标签: wif saml adfs federated-identity thinktecture-ident-model


    【解决方案1】:

    想到的主要事情是确保服务器知道如何处理您正在使用的“AdfsSaml”方案,因此您需要确保您的映射与令牌处理程序正确。

    我尝试的一件事是创建自己的令牌处理程序,并将其映射为标头的令牌处理程序。如果需要,您可以从 Thinktecture 自己的 HttpSamlSecurityTokenHandler 开始,并通过它进行调试。显然,如果它从未命中它,那么你在某个地方遇到了映射问题。

    我还发现,如果在 ClaimsAuthenticationManager 中抛出异常,它会报告为未经授权 - 即使抛出的异常是完全不相关的(在我的例子中是 InvalidCastException)。这让我难了一阵子,因为我没有意识到身份验证已经深入到管道中,并且令牌的验证实际上已经成功 - 我只是在检查 HTTP 响应,它一直说未经授权 - 所以请确保你'不会被这样的小事误导。

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 1970-01-01
      • 2016-05-17
      • 2014-01-30
      • 1970-01-01
      • 2020-03-24
      • 2011-11-16
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多