首先,我想说,直到现在,我还没有听说过SAML,更不用说开发了一个涉及它的SSO策略。再加上我几乎一年都没做过node,这就形成了一个很棒的新手三明治。目前,我有一个客户机,它使用SAML和ADFS作为SSO提供程序。我已经在用护照了。js用于本地登录,因此使用passport saml似乎是使用saml/ADFS实现SSO的方法。在我的研究中,我发现了几个不同的实现指南,但由于我对这个过程一无所知,我可以使用一些指针。
在passport saml文档中,我发现了以下经证明适用于ADF的策略(根据文档):
{
entryPoint: 'https://ad.example.net/adfs/ls/',
issuer: 'https://your-app.example.net/login/callback',
callbackUrl: 'https://your-app.example.net/login/callback',
cert: 'MIICizCCAfQCCQCY8tKaMc0BMjANBgkqh ... W==',
identifierFormat: null
}
我想我的主要问题是这个证书来自哪里?这是我通过SSL在服务器上生成的证书吗?提供商是否提供它?
在我的搜索中,我还发现了这个:https://github.com/auth0/passport-wsfed-saml2,它是基于passase-saml的。ADFS建议使用以下配置:
{
path: '/login/callback',
realm: 'urn:node:app',
homeRealm: '', // optionally specify an identity provider
identityProviderUrl: 'https://auth10-dev.accesscontrol.windows.net/v2/wsfederation',
cert: 'MIIDFjCCAf6gAwIBAgIQDRRprj9lv5 ... ='
}
在这个例子中,路径对象是显而易见的,我的提供者已经给了我一个providerURL。但对我来说,王国毫无意义,而且这该死的证书又出现了。
有人能给我提供一种在node.js站点中实现SAML/ADFS SSO的“类似解释”的方法吗?或者帮我弄清楚我概述的两个解决方案所要求的参数对象的正面或反面?非常感谢!
至于你问题的第一部分,证书来自提供者。请看一下护照saml文件。
只需取出身份提供者的公共签名证书(X.509),并确保将其格式化为PEM编码。格式正确的PEM编码证书将以----begin certificate---
开头,以----end certificate---
结尾。
我在这里可能是错的,但我相信它来自https://serverame/Union ationMetadata/2007-06/Union ationMetadata.xml
中的ADFS服务器XML。
拿出X509证书。我也有同样的问题,下一步我会试试。
我最近经历了同样的思考过程:从未听说过SAML,我需要启用Web应用程序通过SAML进行身份验证,使用OneLogin作为身份提供者(而不是Active Directory)。
在实现过程中,我大量使用了OneLogin的文档和passport saml
库,这两个库我都推荐,尽管我与这两个库都没有关联。
我开始意识到混乱有三个方面:
(1)SAML如何工作,
(2) passport saml
库在节点中的工作方式,以及
(3) 如何配置身份提供程序(OneLogin、Active Directory或其他)。接下来是我尝试的“解释式”解释。
萨米尔
安全断言标记语言(SAML)是一种XML标准,允许用户根据他们的浏览器会话登录。它有很多,但基本上,它可以实现更简单的身份验证过程。用户可以单击按钮,而不是提交带有用户名和密码的表单。
SAML的工作方式更复杂一些。我发现OneLogin的概述和附带的图表很有帮助:
该图表示以下过程:
节点和护照
Passport.js是Node的身份验证中间件。它需要一种策略,这种策略可以是Passate-local
,或者在我们的例子中是Passate-saml
。
由于passport local
策略使用用户名/密码启用passport身份验证,因此passport saml
策略使用浏览器会话和可配置的身份提供程序值启用passport身份验证。
虽然passase-saml
很好地满足了我的目的,但它的文档很难推理。由于OpenIdp身份提供程序处于非活动状态并且有很多可配置的参数,因此配置示例无法正常工作。
我关心的主要一个:entryPoint
和path
(或call backURL
)。我只需要这两个,它们执行以下操作:
entryPoint
是通过授权请求重定向到的URL(请参见上文#2)
还有大量其他重要且有价值的参数,但仅使用这两个参数就可以配置SAML SSO。
身份提供程序配置
最后,需要对身份提供者本身进行配置,以便在给定SAML授权请求的情况下,它知道向何处发送SAML响应。在OneLogin的情况下,这意味着设置一个ACS(消费者)URL
和一个ACS(消费者)URL验证程序
,两者都应该匹配为passport saml配置的路径
/回调URL
。
可以配置其他东西(以支持注销和其他功能),但这是认证的最低要求。
总结
最初的问题有两个部分:(1)如何实现SAML/ADFS集成和(2)高级SAMLnode.js实现指南。这个答案解决了第二个问题。
至于与Active Directory的具体集成,我推荐passport saml在ADFS上的文档,请记住有两个部分:配置passport saml以使用ADFS身份提供程序,以及配置ADFS服务器以响应节点。
我有一个Java Web应用程序,我想将其作为服务提供商并实现SAML。我不确定如何做这件事的工作流程。 我已经阅读了这个SO问题,但仍然无法完全理解。在问题中,他们说他们需要向IDP发送请求,如果我是对的,称为断言。 如何创建断言?我在那里看到了样品。但是在哪里传递登录凭据呢? 另外,我如何在IDP注册我的应用程序,我是否需要安装IDP为此提供的一些证书?工作流程是什么? 谢谢
我很难从各种渠道获得关于如何修改我现有的ASP.NET应用程序(非MVC,如果这很重要的话——基于基于表单的认证的旧web表单)的明确指导,以接受通过SAML的单点登录用户。具体来说,我们希望连接到俄克拉荷马州。我已经让OpenID Connect与Okta一起工作,但是我们的客户特别希望通过Okta使用SAML。我们也希望在未来通过SAML支持其他身份提供者。 我已经在Okta中设置了应用程序,
问题内容: 我尝试实现冒泡排序,但是不确定它是否正确。如果您可以看一下它,并且它是气泡式的,并且可以通过更好的方式完成,请不要害羞。这是代码: 问题答案: 这是冒泡排序的正常实现,似乎还可以。可以进行几种优化,但是总体思路是相同的。这里有一些想法: 如果在内循环中未执行任何交换时,外循环有一个迭代,则中断,无用继续 在外循环的每次迭代中,交换内循环的方向-从左至右执行一次,然后从右至左执行一次(这
我在应用程序中使用Drools 6.1.0。 我们正计划写一本巨著。包含所有规则的drl文件。 主要有两类规则1。空检查2。业务验证 使用规则流组、激活组和显著性,我计划在将事实添加到会话时管理要执行/触发的规则。 即使用这种方法,解决方案对我不起作用,因为。 假设我有以下内容。drl文件 Drools留档是这样说的:“当插入一个事实时,所有约束都将被评估。来自Drools手册:状态评估不依赖于特
问题内容: 我遇到了两个SAML实施问题,以消除我的困惑… 我需要在Java Web应用程序中实现SSO。 为此,我是否需要像这样那样在主机上安装Shibboleth SP ,还是可以通过OpenSAML提供SP功能? 我假设shibboleth的功能与OpenSAML相同,只是在Web服务器级别,而OpenSAML则在软件方面。这个假设正确吗? 编辑: 所以shibboleth(根据Scott
问题内容: 海 我想建立一个包含聊天的网站。我正在使用PHP,我想要一个代码来实现与php的聊天。有人可以帮助我做到这一点吗?我知道阿贾克斯。我不懂其他语言… 问题答案: 我们目前正在与LiveZilla合作,这非常好,这是公司唯一必须拥有Windows PC的东西。操作员界面位于“ .NET”上 livezilla