问题标签 [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 投票
1 回答
1203 浏览

asp.net-web-api - Multi-Tenant OAuth/OpenIdConnect using Web API

We are developing an API that uses various methods for users to register viz. Facebook, Twitter, Google and also our own Membership system (built using ASP.NET Identity).

We have many large customers that intend to use our platform and have been requesting us to allow us to integrate with them as an OAuth Provider. That will allow their users to get authenticated against their system and then be linked into our system as External accounts. Almost making them another "Facebook" stype provider within our system.

If this was just a single customer, we could simply use OpenIdConnect and set them up in our system. They would provide us with a client_id and a Metadata URL to use and we'd be able to link these users back into our system.

My question is - How would we do this for multiple such customers with each having their own OpenIdConnect client_id and Metadata? Could I use multiple instances of app.UseOpenIdConnectAuthentication settings in my Web API?

I have seen some samples of MultiTenant Windows Azure AD where they obtain the tenant_id from the claims and integrate, but in this case, we can't really use Windows Azure AD.

Could someone help me understand my strategy for implementation?

Any help would be very much appreciated.

Anup

0 投票
2 回答
1567 浏览

asp.net - OpenIdConnect Owin 使用 google 登录

我正在尝试设置 OWIN OpenIdConnect 以向谷歌提供商授权。

我用过:http: //blogs.msdn.com/b/webdev/archive/2014/03/28/owin-security-components-in-asp-net-openid-connect.aspx

作为一个教程,但它是为 Azure AD 提供程序设计的,所以我将必要的信息更改为谷歌:

启动.身份验证:

这会导致我的浏览器出现重定向循环错误。

可以肯定的是,我已将提供程序更改为 Azure,它运行良好。

你知道如何解决这个问题吗?完美地,我想将它与默认会员提供程序集成,但现在我正试图让它以某种方式工作。

编辑:

我发现问题出在 response_mode 中。Azure 返回 POST,而 google 返回 GET。

你知道如何:

  • 使用 POST 让谷歌返回
  • 让 OWIN OpenIdConnect 读取 GET 值属性?它通过“#”与 URL 分隔,而不是“?”。
0 投票
1 回答
3166 浏览

facebook - Facebook OAuth 和重定向 URI

查看 Google OpenId 连接和 Facebook 登录,我注意到 Facebook 总是从浏览器中点击“重定向 URI”。解释一下 - 当用户点击表单的链接时

她/他总是被重定向到 {redirect-uri} 指定的 URL。然后,此 URL 包含可以交换访问令牌的“代码”。

谷歌有类似的方法,但是当使用“服务器流”时,{redirect-uri} 被谷歌的服务器“命中”。这样,需要交换访问令牌的代码永远不会显示给用户。

看起来 FB 的方法不太安全,因为访问代码实际上最终会落入攻击者的手中。

  1. 有没有办法让 FB 将代码发送到重定向 URI 但实际上不重定向客户端?类似于谷歌所做的事情。
  2. 有没有人很好地解释为什么 FB 没有类似“服务器流”的行为,而只有“隐式流”?
0 投票
1 回答
958 浏览

oauth-2.0 - 使用不同的 redirect_uri 和 openid.realm 参数从 Google OpenID 2.0 迁移到 OpenID Connect

我正在从 Google OpenID 2.0 迁移到 OpenID Connect。我目前正在使用微软的 ACS,它使用谷歌贬值的 OpenID 2.0 进行身份验证。这意味着我的领域被自动设置为“ https://mywebsite.accesscontrol.windows.net:443/v2/openid ”。

ACS 没有升级计划,因此我已开始直接与 Google OpenID Connect 集成。我正在关注Google 的迁移文档,该文档说我可以添加一个 openid.realm参数(设置为用于 OpenID 2.0 的领域),然后获取映射现有用户帐户所需的 openid_id。它还说redirect_uri 需要openid.realm. 我猜是出于安全原因。

所以我的问题是我不能将重定向 uri 设置为与领域相同,因为领域是 ACS 端点,例如

我尝试将它们设置为不同,但出现错误

'领域不匹配redirect_uri/origin。错误代码:5'

Google 是否计划支持此类案例?

关于如何解决这个问题的任何想法?

0 投票
1 回答
627 浏览

oauth - openid, oauth1.0, oauth1.0a ,oauth2.0 和 open id connect 有什么区别?

请告诉我这些第三方身份验证之间的区别,即 open id、o-auth1.0、o-auth1.0a 、o-auth2.0 和 open id connect。好吧,我对此进行了谷歌搜索,但无法找到所有这些之间的确切区别。一直以来,我都在 o-auth 和 open id 之间有所不同,但并不是所有这些都在一起。

任何参考或任何解释将不胜感激。提前致谢。

0 投票
1 回答
9473 浏览

owin - How are OwinContext.Request.Path and PathBase populated?

I'm writing my own OWIN middleware for OpenID Connect authorization code flow, based on other examples in the Katana Project.

As part of this I have to construct a couple of URIs, eg a Redirect URI and a Return URL.

Other examples in Katana do this by concatenating parts from the current request, for example in CookieAuthenticationHandler

My question is what rules govern what ends up in the two path properties:

I've tried inspecting these properties as the request passes through different handlers in the pipeline below, for the request:

The result:

  • In the mapped handler for /login, the PathBase = "/Client/Login".
  • But when the request gets to the ApplyResponseChallengeAsync method in my QuillCodeFlowHandler on the way back out for the same request, PathBase = "/Client" and Path = "/Login".

So without knowing the "rules" for how these values are populated, then later changed, it is hard to construct URIs using them. If anyone can explain, will be much appreciated.

An extract of my config is:

The OWIN specification gives some explanation and Microsoft.Owin.Host.HttpListener.GetPathAndQuery method seems to be where the path variables are set initially.

0 投票
8 回答
49845 浏览

oauth-2.0 - OpenID Connect 中 ID 令牌到期时间的意图是什么?

在 OpenID Connect 中,访问令牌具有到期时间。对于授权代码流,这通常很短(例如 20 分钟),之后您使用刷新令牌请求新的访问令牌。

ID 令牌也有到期时间。我的问题是这样做的目的是什么?

任何小于刷新令牌到期时间的 ID 令牌到期时间都意味着您最终将拥有一个过期的 ID 令牌,但它是一个有效的访问令牌。

你的意思是:

  • 将您的 ID 令牌的有效期设置为比刷新令牌的有效期长,或者
  • 将其设置为与访问令牌相同的到期时间,并在到期时采取一些措施(什么?),或者
  • 只是在收到时在您的客户端中使用 ID 令牌,然后忽略之后的到期时间?

OpenID Connect 规范只是说在验证 ID 令牌时,

其中(可能)支持上面的第三个选项。


编辑

由于 OpenID Connect 建立在 OAuth2 之上,因此可以在OAuth2 规范中找到以下补充问题的答案,该规范说:


一个相关的问题是,当您为令牌交换授权代码时,相同的规范说您可能会收到如下响应:

但是在这种情况下,“expires_in”与什么有关?访问令牌、刷新令牌还是 ID 令牌?

(有关信息,IdentityServer3将其设置为访问令牌到期时间)。

0 投票
2 回答
525 浏览

openid-connect - 为什么 OpenID Connect 规范只支持基于浏览器的授权类型?

我想在资源所有者凭据(密码)授权类型中使用访问令牌获取用户属性。我想使用 OpenID Connect,但规范只讨论基于浏览器的授权。即授权码和隐式。

我试图理解为什么规范不支持它。是因为存在安全风险吗?还是其他原因?

0 投票
1 回答
82 浏览

jwt - 在实现 Open ID Connect 隐式流时,如何最好地存储共享密钥?

我正在使用“隐式流”将 Open Id Connect 作为依赖方实施。我们使用基于 HS256 MAC 的算法进行签名。

作为此实现的一部分,我们需要生成与双方共享的共享密钥或密钥。

将此共享密钥存储在我们的数据库中而不对其进行哈希处理是否安全?通常我们会对密码或 API 密钥进行散列和加盐,但似乎使用 Open Id Connect 中指定的“隐式流”,秘密永远不会通过网络发送,因此我们需要始终能够再次检索它。

在这种情况下,最佳做法是什么?

0 投票
2 回答
3856 浏览

azure-active-directory - 在输入用户名之前是否可以重定向到 Azure AD 租户特定的登录页面?

我们正在开发一个使用 Azure AD 和 OpenIdConnect 进行身份验证的 MVC 多租户应用程序。没有自己的 Azure AD 租户的用户将在我们的租户域中获得一个用户。注册和身份验证工作正常,我们还为我们的租户定制了登录页面(即公司徽标)。问题在于用于身份验证的“登录页面”。今天,所有用户都被重定向到 login.microsoftonline.com 上的一个页面,类似于以下页面:

在此处输入图像描述

我希望所有用户登陆我的域租户自定义登录页面(也在 login.microsoftonline.com),以便他们看到我们的徽标:

在此处输入图像描述

如果来自另一个租户(不是我的域租户)的用户输入他们的电子邮件,他们将被重定向到他们的公司登录页面。这是极好的。在我的域租户和任何其他租户的通用登录页面中也会发生同样的情况。这也很棒。那么,我怎样才能让所有用户登陆我们定制的登录页面呢?顺便说一句,所有用户都从我们控制的应用程序中重定向,因此我们可以完全控制将用户发送到 Azure AD 的代码。