Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从STS和AngularJS处获得索赔_C#_Angularjs_Asp.net Mvc 4_Wif_Adfs2.0 - Fatal编程技术网

C# 从STS和AngularJS处获得索赔

C# 从STS和AngularJS处获得索赔,c#,angularjs,asp.net-mvc-4,wif,adfs2.0,C#,Angularjs,Asp.net Mvc 4,Wif,Adfs2.0,我目前使用ADFS作为STS,依赖方使用ASP.NET MVC实现,ASP.NET MVC配置了身份访问工具。依赖方正在使用.NET WSFederationAuthenticationModule,因此我可以使用从登录用户处获取声明 ((System.Security.Claims.ClaimsPrincipal)User).Claims 现在我想切换到angularjs,我问自己这是如何实现的? 首先,我想在服务器端创建angularjs html页面,这样我仍然可以使用WSFederat

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

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

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

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


谢谢

您可以尝试使用Asp.NET MVC呈现包含托管AngularJS应用程序的页面,并尝试以下操作:

<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,您可以使用加密声明的webapi令牌身份验证

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