Rus*_*Cam 23 authentication asp.net-mvc claims-based-identity wif
是否有以下可用的例子:
浏览WIF SDK,有一些使用WIF与ASP.NET结合使用的示例,使用它WSFederationAuthenticationModule (FAM)
来重定向到用户用来进行身份验证的安全令牌服务(STS)之上的ASP.NET站点瘦皮肤(通过提供用户名)和密码).
如果我正确理解WIF和基于声明的访问,我希望我的应用程序提供自己的登录屏幕,用户可以在其中提供用户名和密码,并将此委托给STS进行身份验证,通过安全标准将登录详细信息发送到端点(WS-*),并期望返回SAML令牌.理想情况下,按照结合SessionAuthenticationModule
使用的示例工作FAM
, SessionAuthenticationModule
即负责重建IClaimsPrincipal
会话安全分块cookie并在安全会话到期时重定向到我的应用程序登录页面.
我所描述的可能是使用FAM
和SessionAuthenticationModule
使用适当的web.config设置,还是我需要考虑写一个HttpModule
自己来处理这个?或者,是否重定向到瘦网站STS,用户在被动请求方案中登录事实上的方法?
Eug*_*ace 19
WIF + MVC的一个例子可以在"声明身份指南"的这一章中找到:
http://msdn.microsoft.com/en-us/library/ff359105.aspx
我建议阅读前几章,了解所有基本原则.这篇博客文章介绍了MVC + WIF的细节:
http://blogs.msdn.com/b/eugeniop/archive/2010/04/03/wif-and-mvc-how-it-works.aspx
控制登录体验非常好.您应该部署自己的STS(在您的域中,具有您的外观和感觉等).您的应用程序将依赖于AuthN(这就是为什么应用程序通常被称为"依赖方").
该体系结构的优点是authN被委托给1个组件(STS),而不是遍布许多应用程序.但另一个(巨大的)优势是您可以非常轻松地启用更复杂的场景.例如,您现在可以与其他组织的身份提供商联合.
希望它有助于Eugenio
@RisingStar:
令牌(包含声明)可以选择加密(否则它们将以明文形式).这就是为什么始终建议SSL用于浏览器和STS之间的交互.
请注意,即使它们是明文,也不可能进行篡改,因为令牌是经过数字签名的.
Dan*_*don 13
这是你提出的一个有趣的问题.我知道无论出于何种原因,微软推出了这个"Windows Identity Foundation"框架而没有太多文档.我知道这一点,因为我的任务是弄清楚如何将它与新项目一起使用并将其与现有基础设施集成.几个月来我一直在网上寻找好消息.
我采取了一个不同的角度来解决你描述的问题.
我使用了现有的登录应用程序并将Microsoft的WIF管道集成到其中.通过这种方式,我的意思是我有一个用户登录的应用程序.登录应用程序将用户提供的凭据提交给另一个返回用户身份的服务器(或指示登录失败).
查看Microsoft的一些示例,我看到它们执行以下操作:SignInRequestMessage
从查询字符串构造a (由依赖方应用程序生成),从自定义类构造安全性令牌服务,最后使用当前httpcontext调用FederatedSecurityTokenServiceOperations.ProcessSignInresponse.响应.不幸的是,我不能在这里解释得很好; 你真的需要看看代码示例.
我的一些代码与代码示例非常相似.你将有兴趣实现你自己的许多逻辑GetOutputClaimsIdentity
.这是构造描述登录用户的声明标识的函数.
现在,我认为你真的很想知道这些.这就是微软在他们的文档中没有告诉你的,AFAIK.
用户登录后,会将其重定向回依赖方应用程序.无论登录应用程序如何工作,WIF类都会向用户的浏览器发送一个响应,其中包含一个"隐藏"的HTML输入,其中包含令牌签名证书和用户的声明.(索赔将以明文形式提出).在此回复结束时,重定向到您的依赖方网站.我只知道这个动作,因为我用"Fiddler"抓住了它
回到依赖方网站后,WIF类将处理响应(在运行任何代码之前).证书将被验证.默认情况下,如果您使用FedUtil.exe设置了依赖方网站(通过单击"从Visual Studio中依赖方应用程序添加STS参考"),Microsoft的类将验证证书指纹.
最后,WIF框架将在用户的浏览器Cookie(在我的经验中,cookie的名字开始了与"FedAuth")包含用户索赔.Cookie不是人类可读的.
一旦发生这种情况,您可以选择使用ClaimsAuthenticationClass
.在依赖方网站内对用户的声明执行操作.这是您的代码再次运行的地方.
我知道这与你描述的不同,但我有这个设置工作.我希望这有帮助!
PS.请查看我提出的有关Windows Identity Foundation的其他问题.
更新:在下面的评论中回答问题:
我遗漏的一件事是重定向到STS登录应用程序通过重定向发生,查询字符串包含用户登录的应用程序的URL.当用户第一次尝试访问需要身份验证的页面时,会自动进行此重定向.或者,我相信您可以使用WSFederationAuthentication
模块手动重定向.
我从来没有尝试过这样做,但是如果你想在应用程序本身中使用登录页面,我相信框架应该允许你使用以下内容:
1)将STS代码封装在库中.2)从您的应用程序中引用库.3)在您的应用程序中创建一个登录页面.确保此类页面不需要身份验证.4)将web.config部分中wsFederation
元素的issuer属性设置Microsoft.IdentityModel
为登录页面.
归档时间: |
|
查看次数: |
15287 次 |
最近记录: |