问题标签 [openid-connect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
186 浏览

python - 如何在 Windows 上安装 pyOIDC?

pyOIDC的快速安装指南说要运行python setup.py install(在安装先决条件之后)。

当我尝试这个时,我得到:

RuntimeError: chmod error
'chmod' 不是内部或外部命令、可运行程序或批处理文件。

显然,它看起来像是在期待 Linux,但我正在运行 Windows。

这个问题(我需要一个先决条件)有一个答案说:

如果您尚未安装与 Python.org 分发的 Visual Studio 二进制文件兼容的 C/C++ 开发环境,那么您应该坚持只安装纯 Python 包或提供 Windows 二进制文件的包。

好吧,我没有安装与 Python.org 分发的 Visual Studio 二进制文件兼容的 C/C++ 开发环境(至少,我假设我没有,如果我知道我会知道!)。

那么是否有用于 pyOIDC 的纯 Python 包,或者是否有 Windows 安装程序,或者 pyOIDC 是否与 Windows 不兼容?!

0 投票
1 回答
557 浏览

oauth-2.0 - OpenID 连接隐式流响应

在授权请求 (3.1.2.1) 和身份验证响应 (3.1.2.5) 之间,授权服务器负责验证请求、验证用户并在发送响应之前获得用户同意。

http://openid.net/specs/openid-connect-core-1_0.html#ImplicitFlowAuth

这应该如何在 SPA 应用程序中工作?

如果我发出 ajax 请求,授权服务器无法对用户进行身份验证(我看不出如何,因为没有 cookie、http-header 或 url 片段告诉授权服务器用户是谁)。如果我将用户重定向到身份验证端点,我的 SPA 将被卸载。由于我没有服务器 redirect_uri (我理解这是隐式流的全部意义?)端点永远无法再次到达我的 SPA。

显然我错过了一些东西。身份验证和用户授权 chrome 应该如何在隐式流程中向用户显示?

0 投票
1 回答
556 浏览

oauth - 您可以在不获取 OAuth 凭据的情况下使用 OpenID Connect 吗?

Google 的 OpenID 迁移指南中,为了从 OpenID 2.0 过渡到 OpenID Connect,第 1 步是我需要为我的应用程序获取 OAuth 凭据。

我喜欢“常规”OpenID 的一件事是我可以允许我的用户从他们选择的任何 IDP 进行身份验证。无论他们使用 Google、Yahoo 还是任何其他端点,作为开发人员,我都不需要费力地从每个提供者那里手动获取 OAuth 凭据并配置我的应用程序以支持它们。

由于提供商不再支持传统的 OpenID,我有没有办法让用户继续使用他们当前的 IDP,而不必逐个检查并手动获取 OAuth 凭据?

0 投票
1 回答
1556 浏览

laravel - 雅虎 Oauth2/OpenIDconnect

我在 Oauth2 上为少数 IDP 实现了 OpenIdconnect 社交登录,但我未能让 Yahoo 以应有的方式行事。

我的问题:每次我发送身份验证请求时,雅虎都会提示最终用户同意。虽然这在第一次登录时是正常的,但当授予权限时,它不应该一遍又一遍地询问同一个问题。

在步骤 3 中的https://developer.yahoo.com/oauth2/guide/雅虎提示用户上,实际上它是在步骤 1 中完成的。虽然雅虎在第一次调用https://api.login.yahoo.com/oauth2/request_auth时提示用户是合乎逻辑的,但它不应该在彼此调用时提示相同的同意。

Yahoo OAUTH2 的其余部分工作正常。我得到了我需要的一切,虽然 Yahoo 不兼容 OpenID-connect,但它仍然为用户的唯一 ID 提供了 access_token。这允许管理联合并保存对配置文件 API 的调用。

我的问题:雅虎文档在请求 access_token 时没有指定任何“范围”。文档没有提供任何“查询”属性,允许在同意已经到位时进行无缝登录。但我可能在某个地方搞砸了,因为它应该存在!

问题:是否有人成功使用雅虎 OAUTH2 并在每次登录时避免同意提示?

我的演示可见:http : //oidconnect.breizhme.net/demo/openidconnect/home 它是在 Laravel-5 之上用 PHP 编写的。在将我的代码推送到 GitHub 之前,我很乐意修复此 Yahoo 错误。

0 投票
1 回答
248 浏览

security - OAuth - 我可以存储哪些信息?

我正在运行一个电子商务网站,并希望使该网站更易于访问,因此我正在考虑使用 OAuth,以便他们可以使用他们的一些社交媒体资料登录。我还通过电子邮件和其他方式向我的客户发送大量营销活动,所以当用户注册时,我有一些信息,例如他们的电子邮件和有关他们职业的一些详细信息(与产品相关,不要担心我不会多管闲事!)。

如果用户使用 OAuth 登录,那么他们将不会向我提供一些基本信息,例如他们的电子邮件,因为他们不必使用注册表单。

那么,在实现 OAuth 时,我想知道我可以将哪些关于用户的数据存储到我的数据库中?例如,目前我可以向我网站上的所有用户发送时事通讯,但是使用 OAuth 是否可以做到这一点?如果每个用户使用 OAuth 登录,我可以访问哪些类型的信息?

抱歉,如果这些问题已在其他地方得到解答,我一直在尝试搜索,但没有找到任何关于公司可以获得什么的信息,我只是从基本编码的角度和用户的角度发现了优缺点观点。

谢谢!

0 投票
1 回答
1921 浏览

oauth-2.0 - 谷歌身份验证:OAuth2.0 与 OpenID 连接

我正在评估 Google 提供的用于在我的 Web 应用程序中添加 google 登录的可能选项。我看到的可能选项是

  1. Google+ 登录
  2. OAuth2.0
  3. OpenID 连接(OAuth2.0 用于登录)

我没有选择第一个,因为它将我一天内可以进行的 API 调用限制为 10000

在 2 和 3 中,我倾向于选择第 3 名。我真的不需要 API 授权,我也不担心访问令牌过期。一旦我从谷歌收到用户资料,我的网络应用程序将管理自己的用户会话,并且不需要向谷歌查询与用户相关的任何其他数据。根据 Google 文档,#3 允许我自定义用户同意屏幕,而 1 和 2 则不允许。

对我在 2 和 3 之间的比较有何评论?

0 投票
3 回答
2054 浏览

openid - 现在他们正在弃用他们的 OpenID2 提供程序,因此与 Google 进行 OpenID Connect 委托?

多年来,我一直使用 OpenID 委托登录 Stack Overflow(以及其他站点),使用我自己的 URI 作为 OpenID,但让 Google 处理身份验证。我使用这个 Stack Overflow question中描述的技术;因此,我的自定义 OpenID http://tupelo-schneck.org/robert解析为包含以下内容的 HTML 页面:

然而,现在我已经登录到 Stack Overflow 并让 Google 告诉我“重要通知: Google 帐户的 OpenID2 将于 2015 年 4 月 20 日停用。了解更多。” 此页面说明 Google 已弃用 OpenID 2.0,开发人员应将其应用程序迁移到 OpenID Connect。

我能否继续使用自定义 URI 进行 OpenID 登录,但委托给 Google 的 OpenID Connect 提供商进行身份验证?如何?

0 投票
1 回答
2096 浏览

oauth-2.0 - Open ID Connect 和本机公共应用程序......没有隐式流,没有混合流......那又如何?

我们目前正在开发一个原生移动应用程序,我们需要使用我们的身份服务器(使用 thinktecture 身份服务器 v3 制作)和/或外部社交身份提供者对最终用户进行身份验证,以消耗我们系统中的一些资源。

我们正在尝试使用 OIDC 来获取访问令牌和 id 令牌。在一个完美的世界中,我们希望本地移动应用程序最终用户无限期地保持登录状态(即使在本地应用程序重新启动后),直到最终用户决定注销。

所以首先,我们选择了隐式流。但我们发现刷新令牌在此流程中不可用。

1.为什么隐式流规范禁止刷新令牌?危险在哪里?

2. 换句话说,为什么令牌端点不能通过隐式流“到达”?

然后,我们测试了混合流以获取刷新令牌(非常非常长但可撤销)和访问令牌(短期)。问题是将 client_secret 嵌入到本地公共客户端中。(如 OIDC 规范所描述的不良和不安全的做法)

3)所以……原生公共应用程序不能使用混合流……嗯?

因此,我们目前想知道自定义代码流解决方案是否是一个好主意:制作一个“代理”/“前端”Web api,可以使用他自己的安全 client_secret 到达令牌端点,因此,中继代码/从本机客户端应用程序到授权服务器令牌端点的 refresh_token/access_token 请求?

自定义代码流程图

4) 对此有何评论?

0 投票
1 回答
199 浏览

java - 从 OpenID 2.0 迁移到 OpenID Connect:无法使用 openid_id 选择 appengine 用户

使用 Appengine/Java

我正在将 OpenID 2.0 迁移到 OpenID Connect(用于登录的 OAuth 2.0),也在这里解释:https ://developers.google.com/accounts/docs/OpenID?hl=ja

我进入第 3 步:将(现有)OpenID 2.0 标识符映射到(新)OpenID Connect 标识符。

它说“在您的用户数据库中,将 openid_id 链接到新的子 ID。” 问题是我无法选择具有 openid_id 的现有用户,因为在我现有的用户表中使用 com.google.appengine.api.users.User.getUserId() 作为标识用户的值。

(我也确实保留了完整的 com.google.appengine.api.users.User 对象)

知道如何使用 openid_id 来选择 appengine 用户吗?

0 投票
1 回答
2816 浏览

saml-2.0 - IdP 使用 ThinkTecture IdentityServer v3 发起登录

概括

在 SAML 中有一个 IdP 发起登录的概念,这意味着识别方 (IdP) 可以向依赖方(RP / 消费应用程序)发送一个未经请求的令牌,并且用户无需调用 IdP 就可以登录. 我有一个需要这样做的场景,但我希望 ThinkTecture Identity Server v3 位于中间,因为我将在那里处理我的正常身份验证(如非 SAML 日常内容)。由于我无法控制的原因,我无法呼叫 SAML IdP。我想做的是:

IdP 通过身份服务器发起 SSO

我花了相当多的时间来研究这个,我还研究了关于从第三方启动登录的规范,但是如果我理解正确的话,它仍然从第三方将用户引导到 RP 开始,然后将登录请求发送到 IdP(这将是 ThinkTecture 身份服务器),这并不是我真正需要的。

总之,我不认为 OpenID Connect 具有与 SAML 的 IdP 发起的 SSO 等效的功能。这是正确的还是我无法弄清楚还是 ThinkTecture IdentityServer 不支持它?

更多细节

  • 我已成功使用KentorIT 的 AuthServices OWIN 中间件将 IdP 发起的 SAML SSO 直接实施到网站中,根本不使用 IdSrv。
  • 我还将 Kentor 的 OWIN 中间件与 IdSrv 集成,以便我的网站重定向到 IdSrv,然后重定向到我登录的 SAML 服务器,返回到 IdSrv,然后转换 SAML 令牌并将 OpenID 身份令牌发送回我的网站.
  • 为了好玩,我还使用了 Kentor 的库来创建一个用于解压 SAML 令牌的 MVC 控制器,因此如果我愿意,我可以使用它进行一些手动身份验证。

这一切都非常漂亮,非常感谢 ThinkTecture 和 KentorIT。唉,这一切仍然从我的网站开始,并以重定向到 SAML 服务器结束,由于非技术原因,在我的场景中我无法做到这一点。

替代解决方案

在这种情况下,我当然可以完全放弃 IdSrv,但我有理由将 IdSrv 放在中间并让我的所有身份验证都通过它。所以我现在的想法是做这个流程:

  1. SAML 服务器将 SAML 令牌发送到我网站上的特定 URL。
  2. 我的网站将按原样将该令牌重新发布到身份服务器。Identity Server 已经安装了 KentorIT OWIN 中间件,因此这将简单地将用户登录到 IdSrv,这意味着 IdSrv 设置了一个身份验证 cookie。
  3. IdSrv 会简单地重定向回我网站上的另一个 URL,并且不包含任何令牌。到目前为止,这实际上与 IdSrv 无关。
  4. 我的网站现在向 IdSrv 发出身份验证请求
  5. 因为用户已经登录到 IdSrv,IdSrv 将立即响应并使用身份令牌将用户重定向回我的网站。 替代解决方案 这是很多重定向,但它应该可以工作。

在我开始实施它之前,谁能告诉我这是否是正确的方法,还是我错过了一些非常明显的东西?

编辑 1

看来这个想法也行不通。基本上我需要做的是使用 IdP 发起的 SAML SSO 对Identity Server进行身份验证,然后重定向到 RP 并让 RP 通过身份验证请求重定向到 Identity Server。但是,据我所知,除了作为 RP 请求的一部分之外,没有办法让 Identity Server 登录。换句话说,即使我的 SAML 中间件很乐意接受未经请求的令牌,IdSrv 也会忽略 SAML 中间件的登录请求(我认为这很公平)。

因此,我认为另一种解决方案是编写一个控制器,该控制器可以验证 SAML 令牌并在同一服务器上运行的代码中直接调用 IdSrv ,并告诉它使用我手动构建的主体登录用户。

(新)问题是,Identity Server 是否公开了一种机制让我在代码中登录用户,以便 Identity Server 为用户设置适当的 cookie