【问题标题】:Accessing authentication ticket information when using openiddict使用 openiddict 时访问身份验证票证信息
【发布时间】:2017-06-17 08:23:05
【问题描述】:

当身份验证服务器与资源服务器分开时,我有什么方法可以访问设置在身份验证服务器上的身份验证票信息吗?

在身份验证服务器上,我可以访问我使用设置的所有票证属性

var authInfo = await Request.HttpContext.Authentication.GetAuthenticateInfoAsync(OAuthValidationDefaults.AuthenticationScheme);

    var myProperty= authInfo.Properties.Items.FirstOrDefault(p => p.Key.Equals("property_name"));

但是,当我在资源服务器上尝试此操作时,我无法看到相同的属性。

【问题讨论】:

  • 有趣,这应该可以。您确定您使用的是验证中间件(和默认令牌格式)吗?
  • 我正在使用自省中间件。如果身份验证服务器与资源服务器分开,我不认为我可以使用验证中间件?
  • 如果资源服务器配置为使用相同的 ASP.NET Core 数据保护密钥环并且在 DP 选项中配置了相同的应用程序名称,则可以为资源服务器使用验证中间件。您可以阅读docs.microsoft.com/en-us/aspnet/core/security/data-protection/… 了解更多信息。
  • 情况已经如此,所以这将起作用。我明天试试。我觉得正确的解决方案在你下面的答案中。

标签: asp.net-core openid-connect openiddict


【解决方案1】:

为了能够访问存储在访问令牌中的身份验证属性,您必须使用默认访问令牌AND验证中间件。

当使用自省中间件时,您不能流动这些属性。相反,将它们存储为声明,以便能够将它们公开给您的资源服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多