使用.net访问跨域单点登录网站

本文关键字:单点 登录 网站 net 访问 使用 | 更新日期: 2023-09-27 18:07:51

假设我有两个位于不同域的网站,并且它们已经通过SSO登录进行了身份验证。我登录到第一个网站并进行身份验证,现在我决定使用第一个网站中可见的链接访问第二个网站。此链接重定向到第二个网站,不需要凭据。(请注意,这些网站是由其他公司开发和托管的,我无法访问源代码。我有一个登录凭据,我希望访问第二个网站的页面数据)

我想使用。net代码访问网站。我做了一些工作,并使用HTTP请求和重定向到第二个网站的cookie访问第一个网站的链接。但是在我点击链接后不久,它在新的浏览器选项卡中打开了域名2,并生成了新的会话id。它与第一个网站cookie没有任何联系。但是我可以通过手动传递网站2的URL和当前会话id来访问网站2的数据。

单点登录背后是否有安全机制可以突破访问网站1和网站2的共同会话Id ?当两个域有两个会话id时,我如何找到它们之间的连接?我不能在这里张贴代码,因为它有我客户的一些隐私信息。

使用.net访问跨域单点登录网站

我解决了这个问题。有SAML请求和中继状态从两个域发送到登录服务器。即使它们不相同,我们也必须在访问表单数据时考虑它们。对于cookie,我必须从第一个请求到最后一个请求发送pls_login_cookietime。

,

var cookie =新{pls_login_cookieTime = Cookietime.CookieValue("pls_login_cookieTime"),pls_login_SimpleSAMLSessionID = httutility . urlencode (login.CookieValue("pls_login_SimpleSAMLSessionID")),TimeOutCheckID = login.CookieValue("TimeOutCheckID"),pls_login_SimpleSAMLAuthToken = login.CookieValue("pls_login_SimpleSAMLAuthToken"),pls_login_rememberme = login.CookieValue (pls_login_rememberme)

这里Cookietime和login是两个不同的url访问,其中Cookietime是初始url,而login包括登录服务器的url。即使login不提供响应cookie作为pls_login_cookieTime,我必须传递它作为请求头的最终url。

他们很少混淆。如果你使用像fiddler这样的工具来检查http请求,你可以理解他们如何在多个域中管理cookie的大部分内容。休息在你的手中。你必须用不同的方式努力思考。但总的来说,这并不难。