问题标签 [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.
oauth-2.0 - 通过 openid 连接规范注册最终用户
我找不到在 openid connect 中注册最终用户的规范。
也许,你知道怎么做吗?
我有一些想法,但我正在寻找官方答案。
authentication - 通过 Azure 的 OpenID Connect 进行联合身份验证
我需要在 Azure 中运行 .NET 应用程序并让它们针对我的本地目录进行身份验证(通过 PingFederate)。ACS 似乎是从 Azure 进行联合身份验证的唯一方法,尽管它已经弃用一年多。ACS 似乎也不支持 OpenID Connect。
那么我认为不可能通过 Azure 的 OpenID 连接进行联合身份验证是否正确?有谁知道何时将与外部身份提供者的联合添加到 Azure AD?
java - OpenID Connect - 如何在 Java 中验证 id 令牌?
我已经在我的 java 应用程序中实现了基本的 OpenID 连接流程,它似乎工作正常。
我想使用现有的 java 库来验证 id 令牌,如 Salesforce 页面上关于实现 OpenId 连接的详细说明。
是否有任何现有的库可以很好地实现这一点?我已经解析了响应,我只需要找到一些简单的方法来验证 id 令牌是否有效。
c# - 如何使用 Owin/Katana 客户端将“请求”对象中的声明传递给 OpenID Connect 提供者?
我们有自己的 OpenID Connect Provider。我们也有我们自己的依赖方 SDK,它创建请求然后解析结果。现在我们想让我们的 Provider 与 Owin/Katana 客户一起工作。
根据 OpenID Connect 规范,我们可以使用“请求”对象http://openid.net/specs/openid-connect-core-1_0.html#JWTRequests,我们可以在其中将请求的声明和声明的值传递给 OpenID Connect提供者。
所以我的第一个问题是:如何使用 Owin/Katana 中间件传递带有请求声明及其值的“请求”对象?我找不到使用Microsoft.Owin.Security.OpenIdConnect程序集的任何方法。似乎我们只能请求范围,仅此而已。
第二个问题(对我们来说并不重要,但仍然如此):Owin 是否支持“查询”响应模式?默认情况下,Owin 使用隐式流和“form_post”响应模式。但是当我尝试使用“查询”响应模式时,我没有任何结果(我们的 Provider 在查询参数中使用 id_token 重定向到 redirect_uri,但 Owin 没有捕捉到它,使用“form_post”响应模式一切正常)。试过这段代码:
我将不胜感激您的任何帮助。
c# - Owin,在Authentication Request中传递自定义查询参数
我们有自己的 OpenID Connect Provider。我们想使用 Owin 中间件在身份验证请求中传递自定义查询参数。而且我们找不到如何使用Microsoft.Owin.Security.OpenIdConnect程序集来实现它的方法。甚至我们也找不到如何将标准请求参数添加到身份验证请求(例如“ login_hint参数”)。
例如谷歌有“ login_hint ”和“ hd ”参数(https://developers.google.com/accounts/docs/OAuth2Login#sendauthrequest),我们希望有几乎相同的参数。但我们甚至找不到如何使用 Owin 将这些参数发送给 Google。试过这段代码:
但是会生成没有“ login_hint ”和“ hd ”参数的认证请求url。
将非常感谢您为解决此问题提供的任何帮助。
google-app-engine - 使用 Google Openid 连接对用户进行身份验证时如何获取登录用户?
我使用 Goolge openid connect 在我的应用程序中对用户进行身份验证,因为 openid 2.0 已被 google 弃用。
当我发出 Google openid 连接请求时,我会获得访问令牌,从中获取用户详细信息并将用户电子邮件保存在应用程序会话中。所以我没有在我的登录方法中使用 UserService。
当我尝试以下代码时,这种方法不提供我登录的用户详细信息,
在上面的代码中,即使用户通过 openid connect 登录到我的应用程序后,我也会将用户设为 null。
所以问题是,我无法注销用户,即使从 Google 注销后,用户也没有从我的应用程序中注销。用户电子邮件在应用程序会话中可用,直到用户关闭浏览器。
openid - openid 以 openid 2 连接无状态客户端
我试图了解如何将openid服务器迁移到openid 连接,但是在阅读有关openid 连接流程的更多信息时,我注意到对于客户端或中继方来说,事情现在变得更加复杂。
虽然在执行发现后的openid中,来自客户端的身份验证服务器之间的交换可以是完全无状态的(哑模式),现在使用openid 连接客户端将需要 a和 a以及一些如何存储该信息,这是因为oauth2流动。client_id
client_secret
如果我是对的,这意味着每次需要进行身份验证时,都需要执行“动态注册”,以防服务器/应用程序没有client_id
& client_id
。
据我了解,为了获得访问权限,使用openid的应用程序可以遵循无状态流程,并且基本上只信任来自身份验证服务器的回复,就这么简单,无需像openid connect那样先签署合同以稍后信任 .
openid似乎比openid connect更通用,但也许我完全错了,因此我想知道有关如何简化迁移过程的任何最佳实践。或者也许只是像往常一样继续使用openid并将openid connect视为一个完全不同的选择。
c# - ASP.NET Web API 和 OpenID Connect:如何从授权码中获取访问令牌
我尝试让 OpenID Connect 运行...我的 Web API 用户设法获得了 OpenID Connect 提供者的授权码。我应该如何将此代码传递给我的 ASP.NET Web API?如何配置 OWIN 中间件,以便我可以使用授权码获取访问令牌?
更新:SPA 使用 AJAX 与我的 Web 服务(ASP.NET Web API)进行通信。在我的网络服务中使用 OWIN 中间件。我将 OpenIDConnect 设置为身份验证机制。第一次调用 Web 服务时,它成功地将用户重定向到 OpenID Connect Provider 的登录页面。结果,用户可以登录并获得授权码。AFAIK 现在可以(由我的 Web 服务)将此代码用于访问令牌。但是,我不知道如何将此代码返回到我的 Web 服务(这是使用标头完成的吗?),然后如何配置以获取访问令牌。我想我可以手动调用令牌端点,但我想利用 OWIN 组件。
asp.net-web-api - 带有 Google OpenID Connect 的 ASP.NET Web API
目标: 我想用 OpenID Connect 保护我的 Web 服务(使用 OWIN 的 ASP.NET Web API)。身份提供者是 Google。
重要提示: 我只负责网络服务。我没有任何 Web 应用程序(没有 UI;这取决于使用我的 Web 服务的第 3 方)。
注意事项: 由于我的 Web 服务在服务器上运行,我认为最好使用授权代码流(或混合?)。
到目前为止所做的事情:我将 OWIN(在我的 Web 服务中)配置为使用 OpenID Connect ( UseOpenIdConnectAuthentication
)。
当前行为: 我有人未经授权尝试访问网络服务,网络服务将她(发送 302)重定向到谷歌。由于我没有 UI,因此需要由第 3 方正确显示同意页面。假设用户同意并按下“接受”。
我在这里卡住了......据我了解,谷歌发回了一个授权码(我的网络服务可以用来获取访问令牌)。如何获得授权码?Google 是否甚至支持授权代码流 ( ResponseType = code
)?
我是否必须手动调用 Google(以获取访问令牌)然后登录(使用GetOwinContext().Authentication.SignIn(id);
)或者 OWIN 中间件会处理这个问题?
更新:这里有一个repro:https ://github.com/Dunken/WebApiOpenIdConnect
oauth-2.0 - 无法通过 OAuth2/OpenID 验证访问令牌在 WSO2 身份服务器上使用 prompt=none 参数连接
根据OpenID Connect Core 1.0 规范,如果身份验证请求包含prompt
带值的参数none
,服务器必须按以下方式处理它:
授权服务器不得显示任何身份验证或同意用户界面页面。如果最终用户尚未通过身份验证,或者客户没有预先配置对请求的声明的同意或不满足处理请求的其他条件,则会返回错误。错误代码通常是 login_required、interaction_required 或第 3.1.2.6 节中定义的其他代码。这可以用作检查现有身份验证和/或同意的方法。
我的问题是,每当我尝试验证在这种方式之前收到的访问令牌(传递prompt=none
对以及其他必需参数)时,WSO2 IS 服务器总是回复代码 302 并重定向到登录页面。以下是以下cURL命令的相应输出:
有人可以告诉我 - 这是身份验证请求本身的问题,我做错了什么或 WSO2 IS 服务器行为在这种情况下不符合规范?
我使用WSO2 身份服务器 5.0.0
提前感谢您的回答!