问题标签 [openid-provider]
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 提供者
简而言之:
“自发行的 OpenID 提供者”与“普通的 OpenID 提供者”(比如谷歌)有何区别?
我阅读了刚刚说的规范:
“OpenID Connect 支持自发行的 OpenID 提供者 - 个人、自托管的 OP,它们发行自签名的 ID 令牌。自发行的 OP 使用特殊的发行者标识符https://self-issued.me。”</p>
所以我知道“自发行的 OpenID 提供者”可以由我自己托管,并签署 ID 令牌。
区别在于来自“普通 OpenID 提供者”的令牌是使用受信任的证书签名的(例如,因为它是由已经在证书存储中的根 CA 证书签名的),并且可以在不需要发送的情况下进行验证响应中的公钥?
最终有人可以澄清这一点,我将不胜感激。
提前致谢并致以最诚挚的问候!
java - Any existing OpenID Connect Identity Provider Implementations on App Engine?
I'm researching OpenID Connect Identity Providers (IDP) in anticipation of building one on Google App Engine in Java.
Do any implementations already exist that I can examine or use?
To be clear, I am not authenticating with Google Sign-On, this will be a custom method of authentication.
oauth-2.0 - 已使用 nonce 时要输出的 OAuth 错误代码是什么?
OAuth 服务器(包括 Open ID Connect 提供程序)必须检查客户端请求(nonce
如果指定了一个),以确保在过去 5 分钟内没有使用相同的请求。
所有这些都是有道理的,但我的问题很简单,如果服务器?error=...
发现 nonce 已被使用,它会返回什么?
我已经在网络、RFC 和一些 SDK 代码中进行了十几个搜索,但我找不到返回错误的位置以及代码是什么。
openid-connect - 哪些网站允许用户使用任意 OpenID Connect 身份登录?
我正在构建一个 OpenID Connect Provider (OP),但到目前为止,我还没有找到任何可以尝试的公共网站。我本来打算将它添加到我的 StackOverflow 配置文件中,结果却发现糟糕的 ol' SO 使用了一个仅支持 OpenID 1.1 和 2.0 但不支持 OpenID Connect的过时库(repo 已死)!并且http://openid.net/似乎没有任何此类站点的列表,除了它自己的一致性测试。
关于可以去哪里玩我的 OP 的任何想法、参考或答案?
更新:我会尝试更具体。我正在寻找诸如 StackOverflow 或 LiveJournal 之类的网站,它们允许您使用任何 OpenID 登录。除了 OpenID.net 的一致性测试之外,我还没有找到这样做的公共客户端。一个理想的客户端会实现发现,将身份字符串转换为 WebFinger 调用,获取提供者元数据,向提供者动态注册,最后执行身份验证。
java - 如何根据 assoc_handle 生成 OpenID 1.1 sig?
assoc_handle
我已经用 Java 实现了一个 OpenID 1.1 提供程序,但是我在使用来自associate
不同签名的智能客户端时遇到了问题。依赖check_authentication
工作正常的愚蠢客户。具体来说,我正在针对 LiveJournal 进行测试,并且它不断返回:
signature_mismatch:先前的关联使 ID 提供者响应无效。
HMAC()
我的函数的主体是:
for的token_contents
调用HMAC()
来自于处理 for 期间的以下代码checkid_setup
。也就是说,正在签名mode,identity,return_to
,这也是signed
响应参数的值。
最后,是初始调用返回secret
的 base64 解码版本(例如,根据规范检索)。我已经进行了大量测试以确保可以正确解密。mac_key
associate
secret(assoc_handle)
enc_mac_key
有什么想法吗?这有什么明显的问题吗?
或者......是否有一个简单的、独立的客户端,任何人都知道它会执行 OpenID 1.1 并跟踪其步骤。鉴于我可能能够弄清楚我在哪里计算不同的东西。
openid - 使用 identityserver3 作为其他网站的 OpenID 提供者
我想知道是否可以将我自己的身份服务器用作其他知名网站(如 stackoverflow.com)的 OpenID 提供程序。它们允许您使用自己的身份提供商进行注册(请参阅https://stackoverflow.com/users/login?ssrc=head&returnurl=http%3a%2f%2fstackoverflow.com%2f) - 有一个“更多登录选项”按钮,可让您输入“OpenID 端点地址”。
现在我的问题当然是......它有效吗?
链接看起来像 stackoverflow.com 期望什么?我找不到任何相关信息。
现在我所有的应用程序都有一个他们用来与身份服务器对话的客户端。在大多数情况下,我使用混合流。这就是我所熟悉的。如果任何其他网站想要“信任”我的身份服务器作为 openid 提供者,那么在没有受信任的客户端 <-> 关系的情况下如何工作?
single-sign-on - OpenID 在同一个域上连接 RP 和 OP?
我正在尝试查找 RP(中继方)和 OP(OpenID 提供者)是否可以在同一个域上。我们有一个在未来实施内部 SSO 的用例,并被要求在同一域上为每个客户端实施授权。
我们总共有 3 个域,要求为每个域实施授权。这意味着每个 RP 都将是它自己的 OP。显然,这解决了 3 个客户端中的两个的问题,与会话有关。
我认为这是一种不好的方法,但我找不到任何文档或案例研究来加强我的论点。
这似乎是对规范的滥用。我这么想的原因是:
- 我在网上找不到任何其他人在同一域上调用授权的示例
- 我在文档中找不到任何参考来说明您可以或不能
- 在常见问题解答中它说:
它使应用程序和网站开发人员无需承担存储和管理密码的责任,因为互联网上充斥着试图破坏用户帐户以谋取私利的人。
鉴于我们在同一个系统上调用授权,我们仍然有存储和管理密码的责任。
问题
- 是否有任何文档支持或拒绝 OpenId Connect 的这个用例?
- 你知道有什么例子吗?
非常感谢!
bash - CURL 对网站进行身份验证
我必须为我们的命令行应用程序(Django 应用程序)启用 OpenID 例如:每当用户尝试访问我们的 API 时,我必须确保使用 OpenID(Microsoft/Google)对用户进行身份验证。我正在尝试编写一个 Shell 脚本来访问 OpenID 网站,然后将 cookie 存储在用户的机器上,每当他尝试访问第二个应用程序时,他应该根据我存储在他机器上的 cookie 获得访问权限。
我正在尝试使用此处提到的方法,每当我尝试访问第二个 url 时,都会收到错误消息“您的浏览器当前设置为阻止 cookie。您需要允许 cookie 使用此服务。”
我的网站不在单个域上,它们使用 OpenID 进行身份验证。
- 我登录了第一个网站,该网站将我重定向到 OpenID 网站 (Azure AD)
- 我使用带有用户名和密码的 curl 成功访问了重定向的 url 并存储了 cookie。
- 当我尝试使用下面的行登录到第二个网站时,我看到了这个错误。(由于我存储了 cookie,它应该能够读取它们并打开第二个网站页面)
curl --cookie ./somefile https://secondwebsite.com/b
这是我的完整脚本
总结一下,我遇到了两个问题
- 无需再次登录即可将用户身份验证到第二个站点
- 有时,身份验证 url 会要求用户输入密码,该密码将发送给移动用户(2 因素身份验证)。有关如何处理这种情况的任何指示?
oauth-2.0 - OpenID Connect 中的资源提供者之间如何区分访问令牌?
我正在创建一个基于django-oidc-provider的 OpenID Connect (OIDC) Provider 。我一直在阅读 OpenID Connect Spec,但我无法弄清楚访问令牌对于某个应用程序是如何唯一的。
考虑以下用户 Bob 的示例:
Bob 想要登录到应用程序 A,因此他转到其界面并被重定向到 OIDC 提供程序。身份验证后,他被重定向(隐式流)返回到应用程序 A,并带有一个 ID 令牌和一个访问令牌。然后,他使用他的访问令牌在“/image/1”向 A 的 API 发出请求。API 使用访问令牌与 OIDC 提供者联系,以断言用户作为 Bob 的身份。然后,假设信息存在,API 会在“/image/1”处为用户 Bob 返回数据。Bob 继续将他的访问令牌发送到 A 的 API 以处理任何后续请求。
然后,Bob 决定他想要访问应用程序 B 的 API。他向 B 的 API 发送与 A 的 API 相同的访问令牌。B 的 API 使用令牌与 OIDC 提供者联系,并断言用户的身份为 Bob。B 的 API 然后返回 Bob 请求的信息。
是什么阻止了这种情况的发生?我看到至少有两种可能的解决方案:
- 当访问Google 的令牌验证端点时,会返回“aud”参数。应用程序 B 的 API 必须检查此参数以确定令牌对于它自己的 API 无效?
- 当请求特定于资源提供者的令牌时,必须添加一个额外的范围,比如“app-A-api”。然后,当 API 验证令牌时,API 将确保令牌包含所需的范围。
哪些方法或其他方法符合 OIDC 规范?如果应该使用上述之一,我是否正确假设我应该添加一个返回范围或 aud 的新 /tokeninfo 端点,而不是将该信息添加到 /userinfo 端点返回的信息中?
任何输入表示赞赏。我认为我的很多困惑来自于在任何 OIDC 示例中没有看到用于委托对资源提供者的访问的“范围”参数。
php - Openid 设置不完整问题
从 Janrain 设置 openid 连接时,我面临以下问题。
为了测试,我已将其上传到服务器的以下文件夹中:
当我从示例文件夹(/openid/examples/detect.php)运行检测文件时,它给了我以下错误:
我认为 open_basedir 可能有问题,所以我在 public_html 文件夹中的 php.ini 中添加了以下代码:
我怎样才能解决这个问题?
另外,我使用这个外部的 codeigniter 作为一个单独的提供者。
谢谢