【问题标题】:Determine identity on IdentityServer4 *SERVER*确定 IdentityServer4 *SERVER* 上的身份
【发布时间】:2017-08-04 00:04:36
【问题描述】:

请仔细阅读本文,因为我很确定人们会回答与我所问问题不同的问题。

我有一个 IdentityServer4 服务器,它允许用户使用三种身份验证方法(我们目前有多个事实来源):自定义(SQL 中的用户 ID/密码)、ldap(AD 中的用户/密码)和集成窗口(没有需要密码)。这些工作很不错,当我在我的客户端 MVC 应用程序中时,我可以获取身份和声明,无论我使用哪种方法进行身份验证。

我的问题是我如何了解哪个用户已登录到服务器(而不是客户端 MVC!)。我可以看到服务器正在维护 cookie,它必须保存此信息。请记住,User.Identity.Name 将在他们“登录”到我的软件之前返回 Windows 身份验证信息。即User.Identity.IsAuthenticated 总是返回true。他们可能会继续选择 SQL 身份验证方法。

我猜这与HttpContext.Authentication.GetAuthenticationInfoAsync 有关,但我不清楚要传入什么authenticationScheme,因为最后一次调用SignInAsync 称为未指定的重载。

【问题讨论】:

    标签: identityserver4


    【解决方案1】:

    好的,我明白现在发生了什么。我检查用户是否在服务器上通过身份验证的方法是检查sub 声明。只有通过身份验证过程才会出现。

    var sub = User.FindFirst(JwtClaimType.Subject)?.value;
    

    如果为空,那么我知道它们没有经过身份验证。如果它不为空,那么我知道我可以读取 JtwClaimType.Name 并且它不是他们的 Windows Authenticated 帐户名。

    【讨论】:

      猜你喜欢
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-02
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 2018-10-05
      相关资源
      最近更新 更多