Tag: passport saml

Passport-SAML:读取用户信息

还是小菜一碟! 我正在构build一个Node应用程序,并且我已经设置了各种所需的端点。 我的项目的一个要求是使用SAML机制进行身份validation。 我在我的应用程序中使用passport-SAML进行身份validation。 到目前为止,我已经能够设置和使用SAML策略,我的应用程序可以调用idp入口点,并从Idp接收回应。 我无法理解我们如何访问由idp返回的用户信息,以便我可以使用SAML返回的用户信息来创build和维护会话。 const saml = require('passport-saml'); module.exports = function (passport, config) { passport.serializeUser(function (user, done) { done(null, user); }); passport.deserializeUser(function (user, done) { done(null, user); }); var samlStrategyOptions = new saml.Strategy( { // URL that goes from the Identity Provider -> Service Provider callbackUrl: config.passport.saml.callback_url, // path: config.passport.saml.path, // URL that […]

为什么“&SAMLRequest”会附加到我的ADFS入口点URL?

我使用adfs IDP和saml sso使用passport-saml。 我的切入点如下: https://<domain-name>/adfs/ls/IdpInitiatedSignon.aspx?loginToRp=https://<domain-name>/saml/metadata 当我给这个URL时,adfs ssologin页面加载正常,但是当我运行应用程序时, &SAMLRequest被附加了这个URL: https://<domain-name>/adfs/ls/IdpInitiatedSignon.aspx?loginToRp=https%3A%2F%2F<domain-name>%2Fsaml%2Fmetadata&SAMLRequest=nVNBbtswEPyKwLskS0lQh7BsODaKGkhbw1Z76CVgyJVDgCJV7ipxfl9KtgIfGh18IrA7HM7OLGeLY22iV%2FConS1YlkzYYj5DUZuGL1t6sTv42wJSFGAWed8oWOstdwI1citqQE6S75ffH3meTHjjHTnpDIs264I93cL09uY5z%2FPptMrvIBdimrHo9%2FBguBGAiC1sLJKwFEqT7EucZXGWl%2FmE5xm%2FuUvus%2Fs%2FLNqeqR%2B0VdoexnU8n0DIv5XlNt7%2B3JcsWiKCp%2FDwyllsa%2FB78K9awq%2FdY8FeiBrkaao7IdK4VlXaACbS1SxaBw%2B0FdSLHkGmQlWYGkw3qtlYTVoQqL0%2BWGcTgc1xYdxB29LtmmKMpfM5rYGEEiTYKRDe2%2BQvkhg3QAzDsrlxUpgYjo0HxBgsaXqPtZqlF7xD6j8C0Wa9dUbL92tS%2F%2Bp8LehzdJZkfUWruOqhHGqhzVKpTlzIyBj3tvIQjCsY%2BRZYOkg77yKofjNDhgTHqzZz5epGeI1dmHAUkgaLL4lXJji4g%2Boaw0dhksuOOpS34XhzXnWLDTIMVnphsXGeztH8T8%2F81PvEjo%2Fu5e%2Bd%2FwM%3D&SigAlg=http%3A%2F%2Fwww.w3.org%2F2000%2F09%2Fxmldsig%23rsa-sha1&Signature=EdEYkblB2aOEWvoeMtmWVOkeePocMAeRu2gGBRWrjyQvx%2BEP8eekHSb4IQwodJIui%2BXw%2F%2B0ziKD%2FmwFgaIlFhmWa3ZXpiluzhG8OjK2CaH1trnXNrZM3L%2FYANlXwVl2Z4WF4GF8EP7tmIci8XxFrdP%2Fz3EZ2rlCRdELJV%2FK9wNUUiMFF6FLdExcvZieb5ug15I9wynZndhzAZL46f3cjPvMpsJ9oekR8OKIejXmYOevW0OMq%2BbGGipHKE6B1WwTSaPWGrhdEYPSTHvKpmWrz%2F%2FDscCdF9zLqv%2FGY7TgMhTg9FtlfeQ2jnqeaABBilgYaF4B5zLfCGKk5BmxqwzazGg%3D%3D &符号导致页面加载错误,但是当我用其他符号replace这个符号时,页面加载正常。 为什么是这样的,我该如何解决?

使用Node.js和SPA进行SAML2.0身份validation

我已经为了解决这个看起来很简单的任务而头痛了大约2天,但是开始让我发疯。 我有一个应用程序,用户将使用SAML 2.0进行身份validation。 我为前端设置了一个反应应用程序,并且认为我将使用JWT来确保前端和后端之间的其余api通信。 当用户login时,stream程如下: 用户访问www.server.com/并通过反应应用程序获取静态HTML 用户点击“login”并访问www.server.com/login passport-saml将用户redirect到saml身份提供者。 用户login。 用户使用req.body中的SamlResponse调用www.server.com/callback,它由passport-saml解码并放入req.user。 如果用户不存在,我在数据库中创build用户。 我创build了一个智威汤逊 接下来我应该做什么? 问题是用户在从身份提供者callback时没有处于反应应用程序,所以我已经在应用程序中失去了所有的状态,所以我回复的任何东西都会被发送到浏览器。 有什么办法可以强制浏览器给我的身份提供者回拨的SamlResponse? 然后,我可以将它作为来自react-application的http请求发送到服务器。

passport-saml lib不能正确解密带有私钥解密密钥的saml EncryptedAssertion

我有一个encryption的SAML 2.0响应/断言,我需要解密。 格式如下所示: <saml:EncryptedAssertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> <xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <xenc:EncryptedKey> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"/> <xenc:CipherData> <xenc:CipherValue>{some ciphers}</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedKey> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue>{assertion body}</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </saml:EncryptedAssertion> 我也有这样的格式的私人解密密钥: —–BEGIN RSA PRIVATE KEY—– {mumbo jumbos} —–END RSA PRIVATE KEY—– 我已经尝试在这里使用OneLogin的saml解密工具来解密encryption的SAML断言(复制并粘贴到该input框),它就像一个魅力。 https://www.samltool.com/decrypt.php 但是,当我试图使用nodejs,passport-saml导入私钥文件并尝试解密响应时,如果我省略(“—– BEGIN —-”),则会得到“Invalid PEM formated”或“— END —”标题),或者得到“无效的RSAES-OAEP填充”错误。 这是我的代码片段: const fs = require('fs'); const Promise = […]