Azure的ACS服务非常好,我喜欢它可以做的所有魔法,但我希望我的Web应用程序(MVC)不那么神奇。如果你看一下CodePlex上的代码示例,就可以很容易地调用服务并从这样的端点获取登录提供者的JSON列表:
HTTPS:?//.accesscontrol.windows.net/v2/metadata/IdentityProviders.js协议= wsfederation&安培;境界= HTTP%3A%2F%2flocalhost%3a7070%2F&安培;版本= 1.0&安培;回调=
从生成的JSON中,您可以呈现一些指向提供者的链接,一旦您处理这些登录,它们就会通过ACS将您反弹回来,并且ACS会将生成的令牌发布到您设置的任何端点在Azure门户网站中。
我的问题是,我该怎么处理这个令牌?我不想使用创建的WIF“魔法”设置IPrincipal而不是。我只是不想搞乱我在应用程序中已有的东西。
答案 0 :(得分:2)
您可以完全使用WIF对令牌执行的操作。解密SAML令牌后解析它。您可以查看SAML令牌here的规范。我建议使用WIF,因为解析SAML不适合胆小的人。您需要解析所有声明,然后在应用程序中决定如何处理它们。 WIF通过创建IClaimsPincipal并在IClaimsIdentity上设置声明来实现此目的。
答案 1 :(得分:0)
我写了一篇博客文章,为希望获得WIF功能但却不希望将整个应用程序转换为基于声明的人们提供解决方案。这应该让您了解如何处理这种情况:http://goo.gl/J8WZe
最终,我扩展了WIF模块类并添加了一些替代来替换我不需要的魔术方法。
我还没有对此进行测试,但您可以做的另一件事是通过注册它公开的各种事件来进入WIF工作流程。