我目前有几个网站位于不同的域名:
www.app1.com
www.app2.com
www.app3.com
每个都有自己的身份验证机制 - 一些通过Web服务查询活动目录,其他人有自己的用户数据库.
目标是通过某些技术或产品进行单点登录,这些技术或产品不需要用户在跨域访问页面时重新输入密码.
问题:回顾SAML,跨域SSO解决方案似乎总是需要第三方身份提供商来验证用户,例如:
www.my-master-login.com
这是真的?
如果是这样,是否需要更新每个现有网站,以便其身份验证由第三方网站处理?
我正在查看一个模式,并试图弄清楚这个表可以用于什么:
CREATE TABLE "single_sign_ons"
"token" VARCHAR(64) NOT NULL,
"ip" VARCHAR(32) NOT NULL,
"expired_at" DATETIME NOT NULL,
"one_time" VARCHAR(64),
"created_at" DATETIME,
"updated_at" DATETIME,
"user_id" INTEGER,
PRIMARY KEY("token"));
Run Code Online (Sandbox Code Playgroud)
什么是"单点登录",为什么此表的作者为此目的包含这些列?
我正在尝试使用WIF和AD FS 2.0实现基于声明的身份的Web SSO.现在我有一个现有的ASP.Net应用程序,它将身份验证委托给AD FS 2.0服务器并信任发布的安全令牌.这很好用.
但是,在组织中存在支持SAML 2协议的现有JA-SIG中央认证服务(CAS)服务器.我想用现有的CAS服务替换AD FS 2.0.
在我的理解中,WIF使用WS-Federation,它就像围绕SAML令牌的容器.是否可以使用普通的SAML 2协议及其绑定(重定向或POST)?如果那是不可能的(我猜),第二种选择可能是使用联邦身份并将AD FS 2.0与CAS联合.那可能吗?网上几乎没有关于这方面的信息.
谢谢 :-)
我正在尝试创建一个JAVA程序,它将获取我的Windows用户凭据,然后连接到我的unix盒上的kerberos并进行身份验证并允许我使用服务,例如LDAP服务器.
我发现的所有示例都倾向于在运行中询问我的密码,我不希望这样 - 我希望能够运行该程序并且'如果通过魔法'即可通过kerberos认证.
任何链接和示例表示赞赏.
我有一个SAML断言,我希望在.Net中使用WSSecurityTokenSerializer.
尽管存在一些问题,我还是拥有了密钥链和SAML XML .
首先,我从HTTPS POST获得SAML断言:
// spec says "SAMLResponse="
string rawSamlData = Request["SAMLResponse"];
// read the base64 encoded bytes
byte[] samlData = Convert.FromBase64String(rawSamlData);
// read back into a UTF string
string samlAssertion = Encoding.UTF8.GetString(samlData);
// get the SAML data in an XML reader
var assertionPostStream = new StringReader(samlAssertion);
var reader = XmlReader.Create(assertionPostStream);
Run Code Online (Sandbox Code Playgroud)
然后我得到了我的IdP提供的密钥:
// get the key data
byte[] certificateData = System.IO.File.ReadAllBytes("myKeys.p7b");
// decode the keys
var cms = new SignedCms(SubjectIdentifierType.IssuerAndSerialNumber);
cms.Decode(certificateData);
// we have …Run Code Online (Sandbox Code Playgroud) 我有一个网站说www.e1.com.www.e1.com是服务提供商.每当我点击其中的服务时,我都会被重定向到身份提供商,比如www.e2.com.在此之前,在服务提供商(www.e1.com)中,我将检查是否为用户设置了任何cookie.这是第一次没有cookie,所以它会发送空的SessionId值.因此,我发送SAML请求到www.e2.com并且没有id(因为没有设置cookie .Cookie包含Id)
现在在www.e2.com ieIn身份提供商,我将检查www.e1.com是否已发送任何Id值.如果为null,我将创建会话ID并将其存储在数据库中(在www.e2.com中).然后我将浏览器重定向到我的身份验证页面,其中将询问用户的姓名和密码,因此他将进行身份验证.如果身份验证成功,我将使用包含会话ID的SAML响应将浏览器重定向到服务提供商(www.e1.com).
现在在Service Provider中,SessionId值将存储在Cookie中,浏览器将被重定向到消费者服务页面(用户想要访问的服务页面).
现在,如果同一用户想要从同一服务提供商(在会话中)访问某些其他服务,浏览器显然会在Cookie中发送SessionId以及请求SAML.身份提供者将检查其数据库中的SessionId值,如果它在其数据库中,那么它将直接访问用户的服务而不输入登录凭证,因为用户已经为会话进行了身份验证.
这是使用SAML实现单点登录的正确方法吗?或者
如果这种方法有缺陷,你能解释一下这些缺陷吗?
提前致谢 :)
我有一个要求,我需要在两个不同的网站之间实施SSO.
其中一个网站称www.abc.com是使用ASP.NET编写的,并且托管在IIS 7.0上.第二个网站称www.xyz.com是使用PHP编写的,并使用Apache Web服务器.这两个网站都使用不同的数据库,并使用不同的算法来验证用户.
我不能使用第三方SSO,因为这意味着要更改两个网站的身份验证.想知道这是否可行,如果是,那该方法应该是什么?
提前致谢...
我正在尝试在本地运行的应用程序(在localhost上)上配置Shibboleth SSO.我已按照所有说明操作并配置了我的shibboleth2.xml文件,但是在访问以下链接时遇到了麻烦http://127.0.0.1:8080/Shibboleth.sso/Metadata或http://127.0.0.1/Shibboleth.sso/Metadata
我也试过了http://127.0.0.1/MyAppName/Shibboleth.sso/Metadata,但也没用!
我错过了什么吗?谁能帮我解决这个问题?
谢谢.
我在实现Ping Federate时遇到了这个问题
Error - Single Sign-On
Single sign-on authentication was unsuccessful (reference # TAELHKAD).
Please contact your system administrator for assistance regarding this error.
Partner: localhost:default:entityId
Target Resource: http://sp-connection.com
Run Code Online (Sandbox Code Playgroud)
但服务器日志不显示任何错误消息/指示:
16:32:32,854 DEBUG [IntegrationControllerServlet] GET: https://localhost:9031/idp/startSSO.ping
16:32:32,856 DEBUG [IdpAdapterSupportBase] IdP Adapter Selection disabled, performing legacy adapter selection.
16:32:32,859 DEBUG [InterReqStateMgmtMapImpl] Object removeAttr(key: null, name: NUMBER_OF_ATTEMPTS): null
16:32:32,860 DEBUG [AttributeMap] Ignoring attempt to add null value to attribute map for context.TargetResource
16:32:32,860 DEBUG [AttributeMapping] Source attributes:{not-before=2014-05-26T10:47:32Z, authnContext=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified, subject=joe, userId=joe, context.AuthenticationCtx=urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified, context.ClientIp=127.0.0.1, not-on-or-after=2014-05-26T10:52:32Z, …Run Code Online (Sandbox Code Playgroud) 如Google文档所述,您可以将Google Apps用作SAML 2.0 IdP。IdP元数据包含SSO的URL,但不包含SLO URL:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://accounts.google.com/o/saml2?idpid=XXXXXXXX" validUntil="xxxxxxx">
<md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>....</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://accounts.google.com/o/saml2/idp?idpid=XXXXXXXXX"/>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://accounts.google.com/o/saml2/idp?idpid=XXXXXXXXX"/>
</md:IDPSSODescriptor>
</md:EntityDescriptor>
Run Code Online (Sandbox Code Playgroud)
尝试仅对SLO使用相同的URL会导致Google错误:
Error parsing the request, malformed_request: The SAML request is malformed. That’s all we know.
Run Code Online (Sandbox Code Playgroud)
当然,您可以重定向到https://accounts.google.com/logout,但这只会结束Google会话。
Google文档中未提及SLO。支持吗?
single-sign-on ×10
saml-2.0 ×2
.net ×1
adfs2.0 ×1
architecture ×1
cas ×1
database ×1
google-apps ×1
google-sso ×1
gssapi ×1
java ×1
kerberos ×1
login ×1
metadata ×1
pingfederate ×1
pkcs#7 ×1
saml ×1
shibboleth ×1
wif ×1
windows-xp ×1