我目前使用ADFS作为STS,而依赖方是使用身份访问工具配置的ASP.NET MVC实现的。依赖方正在使用.NET WSFederationAuthenticationModule,因此我可以使用
从登录用户获取声明((System.Security.Claims.ClaimsPrincipal)User).Claims
现在我想切换到angularjs,我问自己如何实现这一目标? 首先,我想在服务器端创建angularjs html页面,这样我仍然可以使用WSFederationAuthenticationModule中的身份验证机制。
但我不知道如何以安全的方式让用户对我的angularjs应用程序提出索赔。我的另一个问题是,如何使用当前登录的用户保护webapi调用。根据用户声明,他可以进行特定的webapi呼叫。
我读到angularjs和webapi正在使用类似安全令牌交换的东西。 有人曾经这样做过,或者你能给我一些建议如何实现这个目标吗?
感谢
答案 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令牌身份验证。
这不是最好的解决方案,而是实现目标的一种可能方式。