问题标签 [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.
openid - 尽管 OpenID 2.0 已被弃用,是否仍然可以委托 OpenID 身份验证?
这确实是对此问题的后续问题,仅提供了 Stack Exchange 特定的答案。
我根据这个 SO answer设置了对 Google 的身份验证委派,特别是因为我希望能够更换身份验证提供程序,而不必去所有使用自定义 URI 作为用户标识符的单个站点并修复它们。Stack Overflow/Exchange 是少数几个认为 SO/SE 用户可能具有多个身份的站点之一,而其他站点则根本没有。使用不同的 OpenID 登录对他们来说就像我以完全不同的人身份登录 - 一个新帐户;迁移到新 ID 或将多个 ID 链接到同一个帐户并不总是可行的。
我不想被困在身份验证提供商决定停止提供该服务的位置,基本上是孤立我在其他网站上使用该 ID 创建的任何帐户。我也不想承担仅为我运行自己的身份验证服务的维护负担。委托允许我保留我的明显身份(我的自定义 URI 提供了一个页面,其中包含将身份验证委托给另一个提供商的链接),而无需将我与该提供商绑定。在任何时候,我都可以将 Google 换成另一个提供商,但我提供给其他网站的 URI 将保持不变。
另一个问题中提供的答案基本上是说将 Google ID 添加到 Stack Exchange 帐户并完成它,但这避免了这里的核心问题。如果我将身份验证提供程序更改为支持 OpenID 2.0 的另一个,我不能保证他们不会在某个时候放弃它。我可以找到一个开源身份验证 OpenID 2.0 提供程序,并将其本地托管在我的自定义 OpenID URI 所在的同一台服务器上,但我担心如果 OpenID 2.0 因为没有用/安全而被杀死,这将变得站不住脚。我认为 OpenID 2.0 被弃用是有充分理由的,我不想在它应该被杀死的时候坚持下去。
我的问题是:OpenID Connect 仍然可以进行这种委派吗?如果可以,怎么做?如果 OpenID Connect 无法实现,那么将来是否还会继续支持其他选项?
asp.net-mvc-4 - 将 OpenID2 迁移到 OpenID Connect 或 Google+ 登录
我的 ASP.NET MVC 4 应用程序使用 MVC 模板(开箱即用)附带的 OpenID2 身份验证,并且仅使用 Google 帐户进行身份验证,没有集成其他社交功能。
现在我需要迁移 OpenID2,因为它将在 4 月关闭: 迁移 OpenID2
看来我可以使用以下两个选项之一来进行此迁移:
- OpenID 连接
- Google+ 登录
我想更好地了解这两种方法之间的哪些差异以及一种与另一种相关的优点/缺点。
到目前为止,我认为最大的不同是 OpenID Connect 主要用于身份验证,而 Google+ 登录具有身份验证和社交功能。我对吗?
.net - Google 的 OpenIDConnect 返回一个无法解析的 Base64 令牌
作为理解 OpenIDConnect 的练习,我正在尝试按照本指南在我的网络应用程序中使用 Google 进行身份验证。
问题是我无法读取 Google 发送到我的应用程序的令牌>
它在第一行失败说:“输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符、两个以上的填充字符或填充字符中的非法字符。”
该文档指出:“ID 令牌是加密签名的 JSON 对象,以 base 64 编码。”
出于显而易见的原因,我不能将令牌放在这里。我努力了:
- 输入不是有效的 Base-64 字符串,因为它包含非 base 64 字符
- 添加 '=' 直到长度为 4 的倍数。
- 全部一起。
我得到代码交换响应,并使用 NewtonSoft.Json 库对其进行反序列化:
我不知道编码是否存在任何潜在问题。我可以在令牌中看到几个“-”和“_”。
关于如何读取令牌的任何想法?
azure - 无法访问 Azure 上的 OpenId UserInfo 端点(AADSTS90010:JWT 令牌不能与 UserInfo 端点一起使用)
我正在尝试使用以下 GET 访问 Office365 Azure 租户上用户的 OpenId UserInfo 端点:
响应失败并显示“400 Bad Request”,以及更具体的错误“AADSTS50063:凭证解析失败。AADSTS90010:JWT 令牌不能与 UserInfo 端点一起使用”
使用的不记名令牌是未过期的访问令牌,可正常用于其他操作,例如检索 Exchange 电子邮件。
此外,当我在“ https://www.googleapis.com/plus/v1/people/me/openIdConnect ”(作为 gmail 访问方案的一部分)处对 openid userinfo 端点使用相同的 GET 时,它工作正常
我在这里做错什么了吗?谢谢你的帮助!
一些额外的信息:
- 已经尝试使用 id_token 而不是 access_token,但这没有区别。
- 使用的 Oauth 范围是“个人资料电子邮件”
-请求的资源是“ https://outlook.office365.com/ ”
-客户端应用程序是本机应用程序,并已启用“Windows Azure AD”和“Office 365 Exchange Online”的所有委派权限
oauth-2.0 - OpenId Connect - 规范中的 2 路令牌交换?
OpenId 是否支持在规范中的任何位置进行两种方式的令牌交换?特别是允许双方以某种方式相互共享代币,以便他们可以相互共享服务?
我已经查看了规范,但看不到任何详细说明此类情况的内容。
我正在开发的一个应用程序已将自身与一个受信任的 OpenId 提供程序集成,我们将其称为 Acme。
我们还想向 Acme 提供访问令牌和刷新令牌,因为他们也想访问我们服务的功能。
在我们从 Acme 获取令牌的交互过程中,我们希望向它们公开令牌似乎很自然。
这是否是规范的一部分?或者,唯一的方法就是自己成为一个完整的身份提供者?
codeigniter - 如何使用 phpoidc?
我希望我不会太密集,但我不知道如何使用 phpoidc。我已经从https://bitbucket.org/PEOFIAMP/phpoidc下载了 phpoidc 。我已按照安装文件中的说明进行操作。既然它应该安装了,我该如何使用它?似乎没有关于此的任何文档。
我只想在我的网站上设置简单的用户身份验证。我正在运行 CodeIgniter 3.0 rc。我主要想允许使用谷歌帐户登录。
openid - 使用 openID Connect 会话管理使 JWT 无效
我一直在使用 Thinktecture Identity server V2 和 OAuth2 开发单页应用程序 (SPA)。
我目前正在使用如下工作流的隐式流程, 1. SPA 请求身份服务器的访问令牌。2. 令牌附加到允许访问 web api 的标头
问题是没有办法使令牌无效。
我已经读过 OpenId Connect 和 thinktecture 3 有一个注销端点,我的问题是这如何使令牌无效 Web api 每次都必须调用身份服务器来检查令牌的有效性。
c# - OpenID Connect - 在 WinForms 和 Web 应用程序之间使用 IdentityServer 进行 SSO
我设置了 Thinktecture IdentityServer,我有两个受信任的客户端应用程序,一个 WinForms 应用程序和一个 Web 应用程序,我想在它们之间实现 SSO。
用户将首先打开桌面应用程序,该应用程序具有一个通过身份服务器进行身份验证的登录页面。
桌面应用程序将包含一些生成的 Web 链接,单击这些链接会打开一个新的浏览器窗口到需要身份验证的 Web 应用程序的安全区域,但是,单击这些链接后,我不希望用户必须再次登录,因为他们有已经通过桌面应用程序进行了一次身份验证。
我正在努力看看哪些流程可以实现这一点。
OpenID connect 或 Thinktecture IdentityServer 提供了哪些机制(如果有)可以促进这个过程?
security - OpenID Connect - 使用 Javascript 应用程序的隐式流程,使用 JWT 通过 REST API 进行身份验证
我正在开发一个 Javascript 应用程序 + REST API。
我希望用户通过 OpenID Connect Provider 对应用程序(和底层 REST API)进行身份验证,以实现 SSO 目的。
使用隐式流程,我可以获得一个 ID 令牌 (JWT),用于识别我的 javascript 应用程序的用户。我希望我可以在向我的 REST API 的请求中的 Authorize 标头中发送这个 JWT 以对用户进行身份验证。但是,这种方法的问题在于 JWT 的“aud”字段不会用于 REST API 服务器,而是用于 javascript 应用程序。
这是否意味着隐式流程不适合我的用例,或者我错过了什么?