ASP.NET 视2和认证使用。(窗户身份的基础)
-
26-09-2019 - |
题
是否有任何体面的实例如下:
在寻找通过 该SDK。, 有实例的使用结合。ASP.NET 使用 WSFederationAuthenticationModule (FAM)
重定向到一个ASP.NET 网站 薄皮肤 顶上的安全标记服务(STS)用户使用证(通过提供一个用户名和密码)。
如果我理解为与权利要求的访问正确的,我想我应用程序提供其自己的登陆屏幕上的用户提供他们的用户名和密码,并让这种委托给STS的认证、发送的详细登录信息的一个终点通过一个安全标准(WS-*),并期待一个CA令返回。理想的情况, SessionAuthenticationModule
会工作,每个实例的使用 FAM
在结合 SessionAuthenticationModule
即负责重建 IClaimsPrincipal
从本届会议的安全分块饼干和重新定向到我的申请登录网页时的安全届会议期满。
为什么我描述了可能使用 FAM
和 SessionAuthenticationModule
与适当的网络。配置设置,或做,我需要想想写 HttpModule
我自己来处理这个吗?或者,是重新定向的薄网站STS在用户登录在事实上的做法在一个被动的请求的情况?
解决方案
一个例子。+视是可以在这一章中的"要求身份指南》":
http://msdn.microsoft.com/en-us/library/ff359105.aspx
我建议阅读的第一对夫妇的章节,以了解所有基本原则。这篇文章涵盖的具体情况视+为:
http://blogs.msdn.com/b/eugeniop/archive/2010/04/03/wif-and-mvc-how-it-works.aspx
控制登录经验是完美的罚款。你应该只部署自己的STS(在您的领域,你的外观和感觉等等)。你的应用程序,将简单地依赖于区域(这就是为什么一个应用程序通常称为"依赖方").
优势的建筑是,区域是委派到1分(STS)和不扩散在许多应用程序。但其他(大)的优点是,可以使更为复杂的情况很容易。例如你可以现在其联盟的其他组织的身份提供者。
希望它能帮助 Eugenio
@原:
令牌(内含索赔)可以选择地加密(否则他们将在明确的文本)。这就是为什么SSL始终建议之间的相互作用浏览器和STS。
请注意,即使他们是在明确的文本,篡改是不可能的,因为令牌是数字签名。
其他提示
这是一个有趣的问题你要求.我知道,无论出于何种原因,Microsoft把这个"窗户身份的基础"的框架没有太多的文件。我知道这是因为我已经负责确定如何使用它与一个新的项目,并将它们整合现有的基础设施。我一直在网上搜索了几个月寻找良好的信息。
我已经采取了一个稍微不同的角度解决该问题的描述。
我把一个现有的日志的应用程序和综合微软在管道进入它。是,我的意思是,我有一个应用程序的其中一个用户登录。日志的应用程序提交的凭证用户提供的另一个服务器,返回的用户标识(或指明登录失败)。
在看一些微软的例子,我看到他们做到以下几点:构建一个 SignInRequestMessage
从一个查询(由一依赖方应用程序),建造安全标服务从一个定义类,并最后呼FederatedSecurityTokenServiceOperations.ProcessSignInresponse与目前httpcontext.响应。不幸的是,我真的不能解释它在这里;你真正需要看的代码样本。
我的一些代码非常类似于代码样本。在那里你会有兴趣实施了很多你的自己的逻辑是 GetOutputClaimsIdentity
.这是功能,建声明的身份,介绍登录用户。
现在,这里就是我觉得你真的很有兴趣知道。这是什么Microsoft不会告诉你他们的文档,据我所知.
一旦用户登录在,他们正重定向到依赖方应用程序。无论如何登记应用程序的工作,这为课程将响应发送给用户浏览器包含一种"隐藏"HTML输入,其中包含的令牌证书签字和用户的要求。(权利要求将在明确的文本)。在结束这一响应是一个重定向到你的信赖方的网站。我只知道这一行动,因为我捕捉它与"提琴手"
一旦回到在依赖方的网站、在课程将处理响应(前任你的代码是运行)。该证书将会进行验证。通过默认,如果已经设置了你的依赖方网站FedUtil.exe (通过点击"加STS参考你的依赖方应用程序从Visual Studio),Microsoft的类将核实该证书指纹。
最后,在框架组饼干用户浏览器(在我的经验,cookie名称开始了"FedAuth")包含用户的要求。饼干是不是人类的可读性。
一旦发生这种情况,你可以选择地执行操作上的用户的要求在的依赖方的网站使用 ClaimsAuthenticationClass
.这是哪里 你的代码 是再次运行。
我知道这是不同于你的描述,但我有这个安装工作。我希望这可以帮助!
ps。请检查出其他问题,我已经要求关于窗户身份的基础。
更新:回答问题评论如下:
有一件事情我留出的是,重定向到STS日志的应用程序发生的方式重新定向查询串含有的网址的应用程序的用户登录。这个重定向会自动发生,用户第一次试图访问的页面要求认证。或者,我相信你可以做的重定向手的 WSFederationAuthentication
模块。
我从未试过这么做,但是如果你想使用一个登录在网页应用程序本身,我相信该框架应允许使用下:
1)封STS码内的图书馆。2)的参考图书馆自己的应用程序。3)建立一个登录在网页内的应用程序。确保这样的网页并不要求认证。4)设定发行人的财产 wsFederation
元素内 Microsoft.IdentityModel
部分网络。config登录网页。
您想要做的是一个积极的登入。 WIF包括 WSTrustChannel(工厂)它允许你直接与通信STS和获得安全令牌。如果你希望你的登录表单这样的工作方式,你可以按照从WIF 4.0 SDK的“WSTrustChannel”样本。一旦获得令牌,下面的代码将采取的令牌,并调用WIF处理程序,以创建令牌的会话,并设置相应的cookie:
public void EstablishAuthSession(GenericXmlSecurityToken genericToken)
{
var handlers = FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers;
var token = handlers.ReadToken(new XmlTextReader(
new StringReader(genericToken.TokenXml.OuterXml)));
var identity = handlers.ValidateToken(token).First();
// create session token
var sessionToken = new SessionSecurityToken(
ClaimsPrincipal.CreateFromIdentity(identity));
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken);
}
一旦你做到了这一点,你的网站应该有同样的表现,就像发生被动签名。
您可以使用FederatedPassiveSignIn控制。
设置您的Cookie是这样的: FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie(sessionToken); 对于SSO好好尝试工作到其他域。
要的cookie应该由STS被设置为不在RP。