【问题标题】:Getting the user name with SignalR with Azure Mobile Services使用 SignalR 和 Azure 移动服务获取用户名
【发布时间】:2014-06-06 02:56:24
【问题描述】:

我一直致力于开发 .NET 后端移动服务。对于身份验证,我使用 Azure Active Directory。对于前端,一个 Windows RT 应用程序。随着最近将 SignalR 引入 .net 移动服务,我想我应该看看。在我将 SignalR ConnectionId 与经过身份验证的用户关联之前,我很快就遇到了许多其他问题。

我在网上找到的每个资源都说要使用Context.User.Identity.Name。我已将 Authorize 属性添加到我的集线器以仅允许经过身份验证的连接。我遇到的问题是,即使我的用户登录到 Azure Active Directory,Context.User.Identity.Name 始终为空。

Context.User.Identity.IsAuthenticatedtrueContext.User.Identity.AuthenticationTypeFederated

有什么我没有正确理解的地方吗?

【问题讨论】:

    标签: .net signalr azure-mobile-services azure-active-directory


    【解决方案1】:

    不确定第一个问题,但通常您可以自定义 Clients.User() 为给定用户返回连接的方式,方法是自己实现 IUserIdProvider 并将您的实现注入 SignalR。这样您就可以检查您的请求并从中提取更多信息。如果您发现请求中需要的部分是什么(可能是一些标头或其他),您可以从那里使用它来关联相关的连接。

    查看this

    【讨论】:

      【解决方案2】:

      移动服务基础架构将 Context.User 设置为包含用户信息的 ServiceUser。例如,Context.User.Id 提供用户 ID,Context.User.ProviderIdentities 提供来自各种登录提供程序的信息,包括访问令牌。

      希望这会有所帮助,

      亨里克

      【讨论】:

        【解决方案3】:

        这里的示例问题。在我的应用程序中与 SignalR 无关,但我使用 Azure AD。当与 Hotmail 帐户连接时,我将 Context.User.Identity.Name 设为空。当用户与 azure ad 位于同一域时,则不会。

        这两种情况都是一样的: Context.User.Identity.IsAuthenticated 为 true,Context.User.Identity.AuthenticationType 为 Federated。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-11
          • 1970-01-01
          • 2018-04-24
          相关资源
          最近更新 更多