标签: saml

去中心化 ID (DID) 相对于联合身份的优势

W3C 目前正在开发去中心化 ID (DID) 标准(请参阅此处)。与现有的OpenID、SAML等联合身份认证机制相比,这个新标准有哪些优缺点?为什么组织联盟会选择 DID 而不是传统的联合身份方法?

openid saml federated-identity decentralized-identity

3
推荐指数
1
解决办法
1087
查看次数

使用 Node.js 处理 SAML 的身份提供商端

我需要实现一个应该能够实现的身份提供者服务(使用node.js)。


如果这里提到的软件包可以满足我的需求,您能否指定它们到底如何处理这个问题。任何其他方向和/或提示可能会有帮助。

谢谢

saml federated-identity node.js passport-saml idp

3
推荐指数
1
解决办法
5665
查看次数

Keycloak 作为服务提供商 - 设置签名证书

当使用 Keycloak 作为应连接到(非 Keycloak)身份提供商 (IdP) 的服务提供商 (SP) 时,如何在 Keycloak 中安装签名证书?

更准确地说,Keycloak 应该用作身份代理(如Keycloak 文档中所述),并且 Keycloak SP 和 IdP 之间的通信将通过 SAML 2.0 协议来促进。

Keycloak 文档包含有关如何安装 SSL 证书以进行“正常”HTTPS 通信(例如在浏览器中)的信息,但我找不到有关安装要在与 IdP 的后端到后端 SAML 通信中使用的签名证书的任何信息。有谁知道如何做到这一点?

(也许Keycloak中只安装了一个证书,即该证书既用于SAML通信又用于其他非SAML Keycloak HTTPS通信?)

saml keycloak idp

3
推荐指数
1
解决办法
7772
查看次数

添加依赖方信任在 ADFS SAML 中失败

我花了相当多的时间来解决这些问题,所以我认为快速回顾可能对其他人也有帮助。

adfs saml saml-2.0

3
推荐指数
1
解决办法
7408
查看次数

SAML SSO客户端,测试模拟器SAML Provider/Server

SAML,SSO是我项目中的一个新学习.我没有足够的时间来试验找到正确的工具/ API.请求你帮忙.

我需要实现SAML Client(在Java上),它必须能够发送SAML断言并从SAML提供者/服务器接收SAML响应.我应该使用哪种Java API在Java中编写SAML客户端?

我们的客户已经拥有SAML响应者/服务器,它接收SAML请求并发送带有用户配置文件和其他信息的SAML响应.但我们需要编写测试模拟器SAML响应器/服务器.我使用过Apache和Tomcat服务器.我应该使用哪些服务器/ API来实现此测试模拟器SAML响应器/服务器?

java saml single-sign-on

2
推荐指数
1
解决办法
8616
查看次数

使用令牌身份验证的WCF over net.tcp在TokenHandler和AuthorisationManager之间丢失声明

我们在WCF中使用自定义绑定来使用安全令牌(SAML)进行身份验证.我们发现我们正在获取服务器端,并且看到TokenHandler(派生自Saml11SecurityTokenHandler)正确处理并授权令牌然后返回新的ClaimsIdentity.

但是,当处理然后调用AuthorisationManager.CheckAccessCore(派生自IdentityModelServiceAuthorizationManager)时,operationContext.ServiceSecurityContext.PrimaryIdentity是一个没有填充任何内容的GenericIdentity.

我们在下面的绑定的http实现非常相似,并且工作正常,我们可以看到令牌被验证并返回ClaimsIdentity,然后我们观察AuthorizationManager处理相同的身份并允许它们通过.

netTcp结合是基于代码之一,如下所示:

    /// <summary>
    /// NetTcp binding that supports a Saml token being passed
    /// </summary>
    public class SamlNetTcpBinding : CustomBinding
    {
        private readonly TcpTransportBindingElement _transportBindingElement;
        private readonly BinaryMessageEncodingBindingElement _encodingBindingElement;
        // private readonly SecurityBindingElement _securityBindingElement;

        /// <summary>
        /// Initializes a new instance of the <see cref="SamlNetTcpBinding"/> class.
        /// </summary>
        public SamlNetTcpBinding()
        {
            IssuerAddress = "http://www.myIssuerAddress.com/";

            _transportBindingElement = new TcpTransportBindingElement()
            {
                TransferMode = TransferMode.Streamed, PortSharingEnabled = true
            }; 
            _encodingBindingElement = new BinaryMessageEncodingBindingElement();   
        }

        /// <summary> …
Run Code Online (Sandbox Code Playgroud)

wcf identity token saml net.tcp

2
推荐指数
1
解决办法
1190
查看次数

将用户从SP中注销,但不是IDP

是否可以将用户从使用SAML身份验证的应用程序中注销,但是让他们登录到IDP以便他们可以继续访问其他服务提供商?

我希望能够将用户从应用程序中注销,并在他们返回应用程序时对其进行身份验证,而不将其从IDP中注销(即我不想使用单点注销).这可能与SAML有关吗?

saml saml-2.0

2
推荐指数
1
解决办法
1037
查看次数

SAML2 SSO:AuthnContext类架构:"PasswordProtectedTransport"vs"未指定"

背景:我公司作为IDP的客户担任服务提供商.我们使用OpenAM,但我们的客户使用ADFS或Shibboleth.我们交换元数据文件以建立联合,而不是URL.客户问我们为什么需要AuthnContext类模式(特别是PasswordProtectedTransport),不仅我们不知道为什么,我们不知道如何更改它或者意味着什么.

问题:在SAML2断言中对AuthnContextClassRef使用"PasswordProtectedTransport"与"unspecified"之间的功能区别是什么?

我们目前在所有客户中使用PasswordProtectedTransport,但我公司没有人能告诉我为什么要求这样做.如果我们删除它,联合会停止使用SAM错误和SAML跟踪中的"NoAuthnContext".我们也不明白这一点,因为我从saml文档中了解到,具有模式的模式对于身份验证是可选的.即便如此,我也没有看到任何使用"未指明"的含义的解释.

我无法在任何地方找到关于这个主题的任何详尽的解释或讨论,并希望有人可以为我详细说明,因为我正在努力寻找这个问题.

metadata saml single-sign-on saml-2.0

2
推荐指数
1
解决办法
4362
查看次数

SAML 2.0声称不通过ADFS

我们有一个声明感知应用程序,并使用ADFS服务器来验证来自我们合作伙伴网络的用户.拥有自己的ADFS服务器的客户没有问题.他们的ADFS服务器以SAML 1.0格式向我们发送令牌,一切都很顺利.我们有一个客户端向我们的ADFS服务器发送未经请求的SAML 2.0帖子.信任关系有效,用户进入我们的系统,但没有任何索赔通过.我们得到的就是这个(来自我们的应用程序日志文件):

9/1/2015 7:35:44 PM: Claim type = http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod, value = urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
9/1/2015 7:35:44 PM: Claim type = http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant, value = 2015-09-01T23:35:40.194Z
Run Code Online (Sandbox Code Playgroud)

比较SAML令牌,格式是完全不同的.例如,SAML 1中有一个自定义声明,如下所示:

<saml:Attribute xmlns:a="http://schemas.xmlsoap.org/ws/2009/09/identity/claims" AttributeName="customerguid" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims" a:OriginalIssuer="http://Absolut.vis-intel.net/adfs/services/trust">
<saml:AttributeValue>8835cf46-07a6-45f7-82d9-978905b5911f</saml:AttributeValue>
</saml:Attribute>
Run Code Online (Sandbox Code Playgroud)

但他们是这样的:

<saml2:Attribute Name="CustomerGuid">
<saml2:AttributeValue>b4f3dd70-ef42-4596-be76-3e3fa077d06e</saml2:AttributeValue>
</saml2:Attribute>
Run Code Online (Sandbox Code Playgroud)

我们想也许我们需要对索赔规则做些什么.他们看起来像这样:

c:[Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/customerguid"]
 => issue(claim = c);
Run Code Online (Sandbox Code Playgroud)

我们添加了自定义声明类型,并尝试更改声明规则以使用它们来尝试抓取CustomerGuid,但这没有任何区别:

c:[Type == "CustomerGuid"] => issue(claim = c);
Run Code Online (Sandbox Code Playgroud)

寻找有关如何使这项工作的任何指针.

saml saml-2.0 adfs3.0

2
推荐指数
1
解决办法
2563
查看次数

OpenSaml AuthnRequest签名

我正在构建一个SAML 2.0 AuthNRequest.我设法使用OpenSaml添加签名信息,但我找不到使用库添加<ds:SignatureValue/><ds:DigestValue/>VALUES的方法.这是代码:

    public String buildAuthnRequest()  {
        QName qname = new javax.xml.namespace.QName(SSO_METDATA_QNAME);
        IssuerBuilder issuerBuilder = new IssuerBuilder();
        Issuer issuer = issuerBuilder.buildObject("urn:oasis:names:tc:SAML:2.0:assertion", "Issuer", "samlp");
        issuer.setValue(issuer.getValue());
        DateTime issueInstant = new DateTime();
        AuthnRequestBuilder authnRequestBuilder = new AuthnRequestBuilder();
        AuthnRequest authnRequest = authnRequestBuilder.buildObject("urn:oasis:names:tc:SAML:2.0:protocol","AuthnRequest", "samlp");
        authnRequest.setAssertionConsumerServiceURL("http://test.com");
//      Signature sign = null;
//      sign.setSignatureAlgorithm("SHA256");
//      Credential credential = null;
//      sign.setSigningCredential(credential);
//      authnRequest.setSignature(sign);
        NameIDPolicyBuilder policy = new NameIDPolicyBuilder();
        NameIDPolicy pol = policy.buildObject();
        RequestedAuthnContextBuilder contextBuild = new RequestedAuthnContextBuilder();
        RequestedAuthnContext context = contextBuild.buildObject();
        authnRequest.setRequestedAuthnContext(context);
        authnRequest.setNameIDPolicy(pol); …
Run Code Online (Sandbox Code Playgroud)

java saml single-sign-on opensaml saml-2.0

2
推荐指数
1
解决办法
4579
查看次数