【问题标题】:Get Claims from STS and AngularJS从 STS 和 AngularJS 获取声明
【发布时间】:2014-09-01 18:09:04
【问题描述】:

我目前使用 ADFS 作为 STS,依赖方是使用 ASP.NET MVC 实现的,这些 MVC 配置了身份访问工具。依赖方正在使用 .NET WSFederationAuthenticationModule,因此我可以从登录用户那里获取声明

((System.Security.Claims.ClaimsPrincipal)User).Claims

现在我想切换到 angularjs,我问自己如何实现? 首先,我想在服务器端创建 angularjs html 页面,这样我仍然可以使用 WSFederationAuthenticationModule 中的身份验证机制。

但我不知道如何以安全的方式让用户声明进入我的 angularjs 应用程序。我的另一个问题是,如何保护当前登录用户的 webapi 调用。根据用户声明,他可以进行特定的 webapi 调用。

我读到 angularjs 和 webapi 正在使用诸如安全令牌交换之类的东西。 以前有人这样做过吗,或者您能给我一些建议如何实现这一点吗?

谢谢

【问题讨论】:

    标签: c# angularjs asp.net-mvc-4 wif adfs2.0


    【解决方案1】:

    您可以尝试使用 Asp.NET MVC 渲染包含托管 AngularJS APP 的页面并尝试以下操作:

    <script>
        @{var last = ((System.Security.Claims.ClaimsPrincipal)User).Claims.Last();}
        var user = {
        @foreach (var claim in ((System.Security.Claims.ClaimsPrincipal)User).Claims)
        {
            @claim.Type<text>:</text>@claim.Value if(claim!=last){<text>,</text>} @Environment.NewLine;
        }
        };
    </script>
    

    此代码仅用于演示。你应该加密索赔。为了保护 webapi,您可以使用带有加密声明的 web api 令牌身份验证。

    这不是最好的解决方案,而是实现目标的一种可能方式。

    【讨论】:

      猜你喜欢
      • 2012-07-15
      • 2019-12-01
      • 2014-05-25
      • 2014-04-03
      • 2017-10-05
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多