Tag: saml 2.0

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这个符号时,页面加载正常。 为什么是这样的,我该如何解决?

发出由xml-crypto节点模块生成的validationxml签名

我正在实施一个SAML 2.0 node.js身份提供程序。 作为一个概念的certificate,我想表明,这个服务对一个.net消费者或服务提供者是可用的。 我正在使用node-samlp库。 我遇到的问题是xml SAMLResponse是由npm包签名的,我正在尝试使用.net web应用程序validationxml签名。 validation失败… 这里是我写的为服务身份提供者一块的JavaScript: function postSuccess(req,res,next,userId){ return ms.call('ms.ip.claims.getClaims').then(function(claims){ return samlp.auth({ cert: fs.readFileSync('c:\\temp\\test.pem').toString(), key: fs.readFileSync('c:\\temp\\test.key').toString(), signatureAlgorithm: 'rsa-sha1', digestAlgorithm:'sha1', getPostURL: function(wtrealm,wreply,req,callback){ callback(null,req.samlRequest.AssertionConsumerServiceURL); }, profileMapper: profileMapper, issuer: '<my-company>' })(req,res,next); }); } 这会生成SAMLResponse并将其成功发回到我的.net Web应用程序,但是当我试图validationxml文件的签名时,我遇到了问题。 以下是.net端的validation码: public bool IsValid(XmlDocument xmlDoc) { var cert = new X509Certificate2(); cert.Import("c:\\temp\\test.pfx", "password", X509KeyStorageFlags.DefaultKeySet); var manager = new XmlNamespaceManager(xmlDoc.NameTable); […]

Saml实现不同的后端技术

我需要在具有多种后端技术的Angular应用程序中实现SAML,例如java,node,esb和一些。 有太多的应用程序,不能重写后端,所以实现SAML的良好体系结构是什么?

使用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请求发送到服务器。

Node.js passport-saml一直redirect到localhost:3000 / login / callback

我正在使用来自www.npmjs.org/package/passport-saml的SAML教程。 我是SAML的初学者。 教程说 SAML身份提供商会将您redirect到pathconfiguration提供的URL 我已经有一个OpenIdp帐户。 似乎我可以成功login,但redirectURL总是把我发送到localhost:3000 / login / callback ,因为我把'path'改为'/ users / login-user-db-saml'或' www.passporttoken.com:1234/users/login-user-db-saml' (两者都不起作用,仍然将我发送到默认login/回叫 )。 我有下面的代码。 我做错了什么? /**start FOR SAML**/ passport.use(new SamlStrategy( { path: '/users/login-user-db-saml', entryPoint: 'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php', issuer: 'passport-saml' }, function(profile, done) { findByEmail(profile.email, function(err, user) { if (err) { return done(err); } return done(null, user); }); }) ); app.post('/users/login-user-db-sam', passport.authenticate('saml', { failureRedirect: […]

passport-saml和SAMLencryption

我是新来的passport和passport-saml ,我试图build立一个Node.js服务器,使用我们大学的Shibboleth身份提供者进行单点login。 我相当接近所有工作,但我在/ login /callback,我认为是与encryptionconfiguration相关的打击。 我可以将客户端redirect到login页面,login成功后,IdP将POST发回到我的/ login / callback路由。 然后我得到这个错误: Error: Invalid signature at SAML.validatePostResponse (…/node_modules/passport-saml/lib/passport-saml/saml.js:357:21) at Strategy.authenticate (…/node_modules/passport-saml/lib/passport-saml/strategy.js:68:18) at …etc… 这听起来像是我传递给certconfiguration设置的cert可能不正确? 我假设decryptionPvk和certconfiguration设置应该是我用来创build我的服务器证书的私钥和身份提供商的HTTPS证书,分别? 或者他们应该是别的东西? 我正在使用最新版本的节点和所有各种模块(快递,护照,passport-saml等) 而作为参考,这里是我用来testing所有这些的服务器脚本: "use strict;" var https = require('https'); var fs = require('fs'); var express = require("express"); var morgan = require('morgan'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var session = […]

在使用passport-saml进行身份validation之后,如何redirect到最初请求的url?

对不起,如果这是一个笨蛋的问题,但我有一些麻烦,理解我可以redirect客户端浏览器回到我们的SAML身份提供商(IdP)成功身份validation后最初请求任何URL。 我正在使用最新版本的护照,护照和快递。 例如,假设客户端从另一个不受保护的页面上的链接请求了/foo/bar ,但由于这是一个受保护的资源,因此我将redirect到/login ,这就是我调用passport.authenticate('saml') 。 app.get('/login', passport.authenticate('saml')); function ensureAuth(req, res, next) { if (req.user.isAuthenticated()) {return next();} else {res.redirect('/login');} } app.get('/foo/bar', ensureAuth, function(req, res) { … }); 这个调用将把浏览器redirect到我的IdP的login页面,并且在成功的authentication之后,IdP POST回到我的/login/callback路由。 在这条路线上,我再次使用passport.authenticate(saml)来validation响应SAML,如果一切顺利的话,我将redirect浏览器回请求的资源…但我怎么知道那个请求的资源是? 因为这是一个POSTcallback,我已经失去了与原始请求相关的任何状态。 app.post('/login/callback', passport.authenticate('saml'), function(req, res) { res.redirect('…can I know which url to redirect back to?…'); }); passport-saml自述文件中的示例只是显示一个硬编码的redirect回到根资源,但是我想redirect回原始请求的URL( /foo/bar )。 我可以向IdP发送一个url或其他值,这个IdP会在响应SAML中进行往返和回发? 如果是这样,我怎么可以在我的/login/callback路线访问它? 还是有一些更好的,快递/护照的方式来做到这一点,我失踪了? 任何帮助你可以提供将非常感激!

SAML / ADFS node.js实现指南?

我想先说一下,说到现在为止,我甚至没有听说过SAML,更没有制定一个涉及它的SSO策略。 这一点,加上我几乎没有做节点一年的事实,使一个光荣的新手三明治。 目前,我有一个使用SAML和ADFS作为SSO提供者的客户端。 我已经使用passport.js进行本地login,因此使用passport-saml似乎是使用SAML / ADFS实施SSO的方法。 在做我的研究时,我发现了一些不同的实现指南,但是因为我几乎不知道这个过程,所以我可以使用一些指针。 在passport-saml文档中,我发现以下certificate可以与ADFS一起工作的策略(根据文档): { 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在我的服务器上生成的证书吗? 提供者提供了吗? 在我的search中,我也发现了这个: https : //github.com/auth0/passport-wsfed-saml2 ,它是基于passport-saml的。 build议ADFS使用以下configuration: { path: '/login/callback', realm: 'urn:node:app', homeRealm: '', // optionally specify an identity provider identityProviderUrl: 'https://auth10-dev.accesscontrol.windows.net/v2/wsfederation', cert: 'MIIDFjCCAf6gAwIBAgIQDRRprj9lv5 … =' } 在这个例子中,path对象是显而易见的,我的提供者已经给了我一个providerURL。 但是,领域对我来说是没有意义的,而且还有那个certificate。 有人能给我提供一种在node.js站点中实现SAML / […]