Articles of openid connect

OpenID + API REST +节点服务器

我有一个reactjs项目(在端口3000上运行),一个Spring的JAVA API REST(在8080上运行),我必须configuration它与OpenID服务器一起使用。 我可以从前端项目(使用隐式stream)login到OpenId,但是如果我尝试访问API,则会抛出302,并尝试redirect到Auth服务器的login页面。 我已经在API中安装了pac4。 我怎样才能发送一些API,我怎样才能configurationAPI来validation这个令牌? 因为现在,API正在回答OpenId的login页面302。 我的问题的想法是知道我是否可以做以下事情: 1-从节点服务器login到OpenId。 2-将id_token发送到API Rest 3,API RESTvalidation这个令牌(我认为是针对OpenId服务器的) 4-如果令牌有效,请返回申请。 谢谢!

利用州/ customState和passport-azure-ad

我无法弄清楚customState的目的,如果/如何,我可以利用它来传递数据到返回的url。 具体而言,我希望在login后将用户路由回原来的位置。我想我可以将原始URL传递给参数customState并在返回URL POST customState其返回给我,但似乎是编码或可能换成不同的值。 这是我想要达到的: 匿名用户访问/page/protected需要authentication。 代码调用passport.authenticate ,然后redirect用户login。 用户/auth/oidc/return并返回到预先configuration的返回URL,例如: /auth/oidc/return 。 代码处理从表单提交数据中提取信息。 用户被引导回到/page/protected 。

如何在我的SPA加载过程中validation和更新JWT id_token?

我对OAuth 2.0和OpenID Connect相当OAuth 2.0 ,而且我无法理解stream程的某些部分(或者我应该使用哪些最佳实践)… 对不起,冗长的职位:) 我的设置: OP (OpenID提供者),基本上是使用oauth2orize-openid和passport来authentication和授权用户的express服务器。 我们称之为http://authserver.com Single page application (react + webpack)需要根据我的OP对用户进行身份validation,我们称之为http://my-spa.com 由于它是一个SPA(静态的webpack服务),我不得不使用Implicit Flow 。 我的问题 一旦用户导航到http://my-spa.com ,应用程序被加载,然后检查localStorage是否存在id_token 。 id_token在localStorage没有id_token : 由于没有令牌,我redirect到http://authserver.com/dialog/authorize response_type=id_token scope=openid profile 一旦用户成功通过身份validation和授权, authserver使用URI片段中的id_tokenredirect到my-spa 我将id_token存储在localStorage ,用户可以开始使用该应用程序。 加载时在localStorage有一个id_token 用户closures浏览器并再次打开。 这是我不知所措的地方。 由于已经有一个令牌(来自以前的login),我需要检查它是否有效。 有什么最好的做法呢? 以下是我认为是正确的: redirect到http://authserver.com/dialog/authorize使用: prompt=none id_token_hint=CURRENT_TOKEN 一旦OP收到这个请求,它应该validationJWT签名,尝试自动批准用户,并重新引导一个新的JWT。 令牌get在一段时间后过期 假设一个login用户的JWT过期了,应该什么时候请求一个新的? 什么应该引发更新? 什么是/tokeninfo或/userinfo ? 据我了解,JWT存储了识别用户所需的全部数据。 不过,我见过的例子调用/tokeninfo或/userinfo 。 如果我已经有sub标识,这些端点只是为了validation标记(假设我只需要标识的标识)。 智威汤逊签名validation 除OP , […]

IdentityServer nodejs令牌问题

我试图在身份服务器上授权我的nodejs服务器。 我在nodejs中使用passport-openidconnect库。 我的nodejs代码: var express = require('express'); var session = require('express-session'); var RedisStore = require('connect-redis')(session); var Strategy = require('passport-openidconnect').Strategy; module.exports.configure = function configure(app, passport) { var auth = { authorizationURL: 'https://localhost:44333/core/connect/authorize', tokenURL: 'https://localhost:44333/core/connect/token', userInfoURL: 'https://localhost:44333/core/connect/userinfo', clientID: 'NodeJsClient', clientSecret: 'fakeSecret', callbackURL: '/auth/callback', scope: 'openid profile email offline_access', responseType: "id_token" }; app.use(session({ secret: 'someSecret', resave: false, saveUninitialized: […]

在哪里存储JWT客户端凭证授权

我有一个NodeJS快速应用程序,通过客户端凭据授权身份validation到身份validation服务器。 我收到的令牌用于从API加载数据。 在整个应用程序中存储令牌的最佳实践是什么? 请注意,JWT不是用户特定的,因为我的Express App是客户端。

如何在Azure AD上使用passport.js和OpenID Connect策略

我正在使用OpenID Connect,Node.js,Passport.js对Azure AD进行身份validation。 你能指点我的任何资源/文档和/或示例代码? 我遇到了护照openidconnect 。 这仍然是活动模块? 你知道我可以使用的任何其他模块吗? 如果是这样,如果你能指点我一些示例代码将是伟大的!

什么authentication策略使用?

最近,我一直在阅读OAuth2,OpenID Connect等,但仍然很遗憾什么时候以及如何实现它。 我现在想使用NodeJS。 可以说我想创build一个博客服务。 该服务将公开API供客户使用。 “客户”包括pipe理员CMS。 我想这将是很好的解耦我的服务器和客户端(UI)。 我可以在不触摸服务器的情况下更改UI。 这些客户端可能会成为单页的Web应用程序。 好的第一个问题:在这个例子中,我应该使用OAuth2吗? 为什么? 仅仅因为我正在授权pipe理员应用程序访问博客? 自从SPA以来,我认为正确的策略是OAuth2 Implicit Flow? 对于每个应用程序,例如。 admin cms,我将不得不生成传递给auth服务器的AppID。 没有应用程序的秘密是正确的? 在这种情况下是否可以使用谷歌login(而不是用户名/密码)? 是否OpenID连接做到这一点? 我如何在NodeJS中实现所有这些? 我看到https://github.com/jaredhanson/oauth2orize ,但我不明白如何实现隐式stream。 我看到一个非官方的例子https://github.com/reneweb/oauth2orize_implicit_example/blob/master/app.js ,但我在想的是为什么会话需要? 我认为令牌的目标之一是服务器可以是无状态的? 我也想知道,我应该什么时候使用API​​密钥/秘密身份validation?

KeyCloak-Nodejs – 返回授权码和状态后进入无限循环

我正在使用KeyCloak为虚拟节点应用程序设置Open Id连接。 我正在使用在关键斗篷文档中提到的nodejs适配器 。 以下是节点应用程序的routes.js文件: 'use strict'; /** * Module dependencies. */ const home = require('../app/controllers/home'); /** * Expose */ module.exports = function (app, passport) { var session = require('express-session'); var Keycloak = require('keycloak-connect'); var memoryStore = new session.MemoryStore(); var keycloak = new Keycloak({ store: memoryStore }) // app.use(session({ // secret: 'mySecret', // resave: false, […]