问题标签 [google-openidconnect]
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.
google-signin - 为什么“提示:'none'”在 Google 登录中效果不佳?
我编写了一些代码来使用 Google SignIn 构建 Web 应用程序。
首先,初始化API平台,
并让用户登录。
在此代码中,我想跳过(已经)登录用户的身份验证弹出窗口,并遵循开发人员文档中的参考:
prompt:指定是否提示用户重新认证。请参阅 OpenID Connect 请求参数。可选的。
和上面文档中显示的参数文档。
提示
可选。以空格分隔、区分大小写的 ASCII 字符串值列表,指定授权服务器是否提示最终用户重新进行身份验证和同意。定义的值为:
none
授权服务器不得显示任何身份验证或同意用户界面页面。如果最终用户尚未通过身份验证,或者客户没有预先配置对请求的声明的同意或不满足处理请求的其他条件,则会返回错误。错误代码通常是 login_required、interaction_required。这可以用作检查现有身份验证和/或同意的方法。
但效果不佳。实际上,对于已登录的用户,API 会显示一次空白弹出窗口,然后立即关闭它。当我自动执行此阶段时,它被浏览器阻止。
为什么会发生?我应该怎么做才能避免弹出登录用户?
apache - mod-auth-openidc 的用户列表
我已经在 Ubuntu 14.04 LTS 上为 apache2 设置了openidc。一切都运行顺利(我认为)除了我找不到任何关于如何配置允许用户(白)列表的文档。
我有一个非常小的稳定用户列表,所以我想使用一些简单的东西,比如 txt 文件。如果有人可以向我指出一些文档或示例,将不胜感激
下面是我的 apache 配置文件的一个例外。我想要类似于下面的 Require 语句的东西
我已经测试了登录使用,但这并没有提供太多隐私:)
google-authentication - 我可以为 Google OpenIDConnect id_token 获得一致的“iss”值吗?
我正在使用Google 的 OpenIDConnect 身份验证,并且我想验证id_token
从 Google 返回的 JWT。iss
但是,关于 Google 为ID 令牌中的(颁发者)声明返回的值,文档似乎不一致。
一个页面显示“ iss: always accounts.google.com”,但另一个页面显示“ID 令牌中 iss 的值等于accounts.google.com
或https://accounts.google.com
”,示例代码中的注释进一步说明:
我有一个服务器端应用程序,而不是 Android 应用程序,所以我没有使用 Play Services。
为了进一步搅浑水,OpenIDConnect 规范本身包含一个注释:
实施者可能想知道,在撰写本文时,Google 部署的 OpenID Connect 实施发布的 ID 令牌省略了 iss(发布者)声明值中所需的 https:// 方案前缀。因此,希望与 Google 合作的依赖方实现将需要有代码来解决这个问题,直到他们的实现被更新。任何此类解决方法代码都应以不会中断的方式编写,谷歌将缺少的前缀添加到其发行者值中。
该文件的日期为 2014 年 11 月 8 日。从那时起,Google 是否已对某个iss
值进行了标准化,还是我真的需要同时检查这两个值?上面的评论似乎表明只有 Play Services >=8.3 可以iss
使用https://
,而其他任何地方的值都是 just accounts.google.com
。真的吗?
security - 在 google 中检索用户组以进行工作
我正在构建一个后台应用程序,并希望利用我们公司的 Google for Work 目录进行身份验证。有没有办法检索用户在组织内所属的组?也许在通过 OpenId 进行身份验证时让他们进入索赔?
google-api - 为什么 Google 的 OpenId Connect API 没有发回所有声明?
我在这里查看了 Google 的 OpenId Connect 发现文档。它清楚地表明支持的声明是:
并且支持的范围是
我希望当我向OpenId Connect UserInfo 端点(即https://www.googleapis.com/oauth2/v3/userinfo)发送 GET 请求时,我会取回所有支持的声明(假设当我进行了身份验证,我请求了所有受支持的范围......我在发送初始请求时做了如下所示)
以下是我在 UserInfo 端点请求的响应中得到的声明:
请注意它们如何成为所有受支持声明的子集...谁能告诉我为什么我的回复中没有得到所有受支持的声明?
google-openid - google登录强制密码提示
Google 不赞成在 iOS 和 Android 等设备中使用嵌入式 Web 视图进行 Google Signin 身份验证。
Android 支持 Kiosk 模式。让众多用户共享一个 Android 设备的概念并不陌生。iOS 也经常用于“共享设备”模型。
但是,iOS 版 Google Signin 的当前实现使用 SFSafariViewController,而后者又使用系统范围的共享 cookie。这就是谷歌现在存储所有谷歌登录信息的地方。应用程序无法对此进行任何控制。苹果已经坚定地表明了这一点。
因此,在 Kiosk 模式下,如果应用程序使用 Google SignIn,则没有“注销”,不是真的。使用的每个帐户都将使用相同的设备范围浏览器缓存来存储令牌......然后任何其他用户都可以在令牌到期期间以该用户身份登录,而无需密码。除非用户在 Safari 中明确退出他们的谷歌帐户,否则谷歌不会第二次提示输入密码……这不是应用程序可以管理或控制的。
所以问题是:
开发人员如何确保当用户退出使用 Google Signin 登录的应用时,他们会在下次登录时提示输入密码?
(研究表明,显然......他们不能,但谷歌也关闭了论坛以征求对这个可爱堆栈的评论,声称他们宁愿扫描 Stackoverflow,然后与选择使用他们的 API 的愚蠢赌徒互动 - 让我们改变我们的转而专注于支持 AzureAD,与谷歌不同,它似乎并不为为开发人员做不必要的工作而感到自豪)
谷歌登录现在一团糟。没办法,只能扔了。
我希望有人用一个聪明的答案证明我错了,因为我很乐意扭转我的立场:)
在这个不断改进的勇敢新世界中……一切都被打破了。
azure - UseOpenIdConnectAuthentication - 无法取消保护消息。状态错误消息
我正在尝试在我的应用程序中添加 Google 和 Azure Active Directory 权限作为 OpenIdConnect 选项。
如果我分别添加它们中的每一个,它就可以正常工作。但是,如果我同时添加它们,我会收到以下错误消息:
无法取消保护消息。状态
这些是 OpenIdConnectOptions 配置:
asp.net-core - 如何为使用外部提供商登录的用户生成 AccessToken
我有一个由 asp.net 核心实现的 API。我使用 OpenIddict 为通过电子邮件和密码注册到我的 api 的用户生成访问令牌和刷新令牌。我已将 Google 中间件 (.UseGoogleAuthentication ... ) 添加到我的 API 中,并且我可以使用 Google 成功登录用户。我的客户是 UWP,在向 localhost/Account/ExternalLogin/Google 发送请求后,我使用 WebAuthenticationBroker 重定向到 google。当用户使用 google 登录时,他被重定向到 Account/ExternalLoginConfirmation,这在完成 ExternalLoginConfirmation 之前是微不足道的 已关闭 我没有其他方法可以为该用户获取令牌(因为他没有密码,而且我不知道用户名)。试过这个:
但这失败并引发异常:
an authorization or token response cannot be returned from this controller
现在如何为用户生成这些令牌?
kubernetes - 将 Kubernetes 设置为使用 OpenID Connect 时, --oidc-client-id 参数的用途是什么?
与 OpenID Connect 相关的Kubernetes 文档提到,作为设置的一部分,您需要向 API 服务器提供一些参数:
没有其他解释说明这将如何映射到符合 OpenID Connect 的 Google 身份提供者返回的内容。
我不知道这个参数值将用于什么。它会与解码后的 JWT 令牌中的内容匹配吗?
看起来id_token
谷歌身份提供者返回的内容可能包含一些东西,一旦解码,在其aud
字段中(aud
显然是“观众”的缩写)。这是--oidc-client-id
应该匹配的吗?我走远了吗?
oauth-2.0 - 为本地应用程序打开 ID 连接,我需要在初始授权后不提示用户的情况下获取有效的 ID 令牌吗?
我正在使用系统浏览器进行身份验证。身份提供者 - Google
脚步
1 - 用户通过输入用户名和密码获得授权。此时我得到了 authentication_code。
2 - 我调用令牌端点并获取访问令牌、id 令牌和刷新令牌。
当 ID 令牌过期时,我需要获取一个新的有效 ID 令牌。我需要在不提示用户输入他的凭据的情况下执行此操作。
问题 - 是否可以在不提示用户的情况下获取新的 id 令牌?根据开放 ID 规范,刷新令牌并不总是返回 ID 令牌并且它不是保证行为
尝试过的解决方案
使用“prompt=none,login_hint=username”调用授权端点。这仍然会重定向到浏览器并返回到应用程序。
有错误的响应
AuthorizationException: {"type":1,"code":1008,"error":"interaction_required"}