从STS和AngularJS获取索赔

时间:2014-07-11 07:27:15

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

我目前使用ADFS作为STS,而依赖方是使用身份访问工具配置的ASP.NET MVC实现的。依赖方正在使用.NET WSFederationAuthenticationModule,因此我可以使用

从登录用户获取声明
((System.Security.Claims.ClaimsPrincipal)User).Claims

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

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

我读到angularjs和webapi正在使用类似安全令牌交换的东西。 有人曾经这样做过,或者你能给我一些建议如何实现这个目标吗?

感谢

1 个答案:

答案 0 :(得分:0)

您可以尝试使用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令牌身份验证。

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