是https://www.google.com/accounts/o8/id和https://me.yahoo.com是谷歌的和雅虎的OpenID端点或URL的,而我必须发送发现请求,其响应将有OpenID端点?
我目前正在为网站实施OpenID身份验证.在测试过程中,我注意到Google接受了不同版本的Google个人资料ID,例如:
有趣的是,验证的ID也不同(对于上面的样本,相同的顺序):
当然,这使得查找关联的用户帐户非常困难,更不用说不可能了.有趣的是,所有上述ID都适用于Stackoverflow.所以我认为在我的实现中我必须要有一些规范化步骤 - 或者做一些专门的伏都教来完成事情.
看看OpenID身份验证规范的7.2 Normatlization我发现了这个:
URL标识符必须在检索其内容时通过以下重定向进一步标准化,并最终将[RFC3986]的第6节中的规则应用于最终目标URL.该最终URL必须由依赖方记录为声明的标识符,并在请求认证时使用.
以下重定向声明的ID并没有多大帮助,因为我还有两个不同的ID:
查看已验证ID的重定向更有帮助,因为我总是最终得到这个:
好的,看起来我应该遵循经过验证的ID的重定向,而不是声明的ID.
现在的问题是:遵循声明/验证ID的重定向是否安全,例如在搜索DB之前如此:
do {
user = lookup(verifiedId)
if (user is null)
response = fetchUrl(verifiedId)
if (response.location is null) {
break # no redirect, jump out of loop, unknown user
} else {
verifiedId = response.location # use redirect location
}
} while (user is null)
return user;
Run Code Online (Sandbox Code Playgroud)
如果是的话,我怀疑这不仅应该在查找用户时进行,还应该在存储新ID时进行,对吧?
(如果我真的应该重定向,我还有另外一个关于潜在恶意重定向的问题,但是我必须等到我得到这个问题的答案.无论如何都可能过时了)
问题:
我的组织ExampleFooBar使用Google Apps.在我们的网站上,我想启用OpenID单点登录(如StackOverflow),但只允许@ examplefoobar.com电子邮件地址登录.我应该将哪个OpenID网址用于Google Apps电子邮件地址?
根据drup中包含OpenId的评论,该域名http://www.google.com/profiles/<username>可用于普通的Google帐户,但这对Google Apps帐户无效.
谷歌还提供网址,https://www.google.com/accounts/o8/id但使用该网址将允许任何找到我们网站登录页面的谷歌用户登录,因为登录页面接受任何谷歌帐户名称.
我可以使用哪个Google网址来确保只有@ examplefoobar.com电子邮件地址可以登录?
Google Apps OpenID的Google文档位于http://code.google.com/googleapps/domain/sso/openid_reference_implementation.html,但是非常无益.
我很难学习如何将Google OpenId支持集成到我的Spring 3.1 Web应用程序(包括Spring security 3.1).
我找到了一些文档和教程,但它对我没有帮助.
喜欢:
我仍然无法弄清楚如何使这项工作.
在应用程序中获取Google OpenId登录工作所需的组件是什么?我的意思是让这个运行的绝对最低要求是什么?没什么特别的
一个非常简单的例子会很棒.
谢谢
我是身份验证和授权的初学者,但我必须在工作中连接到openid connect提供程序.我对如何使用Spring Security了解一点.
首先,我得到UserInfo对象,谢谢你的好方向. https://oauthssodemo.appspot.com/step/1
然后我在下面找到了一个名为"spring-security-oauth"的优秀实现.我可以在tomcat上运行应用程序并成功连接到facebook.
https://github.com/SpringSource/spring-security-oauth
下一步,我想通过使用"spring-security-oauth"连接谷歌,但我不知道如何完全这样做.(老实说,我不知道openid连接和aouth2差异如何..)
给我点暗示.任何帮助将不胜感激.
通常使用谷歌OpenId工作正常,每天数千次,然后它将开始间歇性出错并超时一小时左右(一些请求将验证,但不是全部).重复验证最终会起作用.
错误消息是:
Event code: 200000
Event message: No OpenID endpoint found. : https://www.google.com/accounts/o8/id
Sequence contains no elements
Run Code Online (Sandbox Code Playgroud)
添加log4net产量:
DotNetOpenAuth.Yadis:
Error while performing discovery on: "https://www.google.com/accounts/o8/id":
DotNetOpenAuth.Messaging.ProtocolException:
Error occurred while sending a direct message or getting the response.
---> System.Net.WebException: The operation has timed out
at System.Net.HttpWebRequest.GetResponse()
at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse
(HttpWebRequest request, DirectWebRequestOptions options)
in c:\...\Dot...Core\Messaging\StandardWebRequestHandler.cs:line 127
--- End of inner exception stack trace ---
at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse
(HttpWebRequest request, DirectWebRequestOptions options)
in c:\...\Dot...Core\Messaging\StandardWebRequestHandler.cs:line 175
at DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse
(HttpWebRequest request, DirectWebRequestOptions options)
in c:\...\Dot...Core\Messaging\UntrustedWebRequestHandler.cs:line …Run Code Online (Sandbox Code Playgroud) 我想要求用户在访问我的GAE(Google App Engine)应用程序的某些部分时使用登录名/密码.我想限制对预定义用户集的访问,例如在页面上,可以将新数据上载到数据存储区.
我发现有在GAE 3种方式如何可以解决的,但它看起来像只有最后一个(最复杂),可能是我的问题的解决方案:
使用部署描述符(<security-constraint>在web.xml中).这并不好,因为这些用户可以访问,即使是GAE应用程序管理页面的查看者,他们也可以看到帐单历史记录,浏览数据存储区,日志等等,这是我必须避免的.
使用联合登录(Open ID)(https://developers.google.com/appengine/articles/openid)并允许用户使用他们的Google,Yahoo!或其他登录身份.它不是一个解决方案,因为我想限制对一小组用户的访问(最多5个)并且不允许每个人使用该应用程序.
另一个选项是创建只能通过HTTPS访问的简单自定义登录页面,并让用户在POST请求中发送用户名和密码(它可以很简单,因为我们有安全的https连接)到servlet,在servlet上生成一些会话标识符具有指定的有效性并使其成为每个后续请求的一部分.如果会话标识符存在且同时未手动过期,则还需要在用户每次发送GET或POST请求时进行检查.
关于如何维护管理员帐户的任何其他/更好的建议?可以HttpSession帮助最后一个变种?
亲切的问候,STeN
authentication google-app-engine servlets httpsession google-openid
我使用的是asp.net mvc 4模板,默认情况下附带OpenID2.
由于谷歌已经开辟了OpenID 2.0,我想使用OAuth 2.0.我检查了所有没有开箱即用解决方案的MSN博客.我只使用visual studio 2012和mvc 4.
所以我的问题是如何将openid 2.0迁移到open auth.
感谢和问候,Aruljothi
我正在从Google OpenID 2.0迁移到OpenID Connect.我目前正在使用微软ACS,它使用Googles折旧的OpenID 2.0进行身份验证.这意味着我的领域自动设置为" https://mywebsite.accesscontrol.windows.net:443/v2/openid ".
ACS没有升级计划,所以我已经开始直接与Google OpenID Connect集成.我正在关注Googles迁移文档,该文档说我可以添加一个 openid.realm参数(设置为OpenID 2.0使用的域),然后获取映射现有用户帐户所需的openid_id.此外,它说,redirect_uri 需求是相同的openid.realm.我猜出于安全原因.
所以我的问题是我无法将重定向uri设置为与领域相同,因为领域是ACS端点,例如
https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=id.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Fmywebsite.com%3A2018%2F&scope=openid%20profile%20email&state=state&openid.realm=https%3A%2F%2Fmywebsite.accesscontrol.windows.net%3A443%2Fv2%2Fopenid
Run Code Online (Sandbox Code Playgroud)
我试过设置不同但我收到错误
'领域与redirect_uri/origin不匹配.错误代码:5'
Google计划支持这样的案例吗?
有关如何解决这个问题的想法吗?
问题:缺少OAuth 2刷新令牌.
问题是localhost版本接收Refresh Token授权令牌的一部分,但GCE中运行的相同代码不会.
细节:
我编写了一个实现Google OAuth 2.0的Python Flask应用程序.此Web应用程序在云中运行,具有经过验证的域名,有效的SSL证书和HTTPS端点.此未修改的Web应用程序也以localhost.运行时之间的区别在于localhost版本不使用TLS.代码流中没有其他差异.
除了Refresh Token缺少,我不能自动更新token,一切都很完美.
我已经广泛研究过这个问题.access_type=offline正确实现API等问题,否则我不会Refresh Token在localhost版本中获得.
我正在使用requests_oauthlibpython库.
gcp = OAuth2Session(
app.config['gcp_client_id'],
scope=scope,
redirect_uri=redirect_uri)
# print('Requesting authorization url:', authorization_base_url)
authorization_url, state = gcp.authorization_url(
authorization_base_url,
access_type="offline",
prompt="select_account",
include_granted_scopes='true')
session['oauth_state'] = state
return redirect(authorization_url)
# Next section of code after the browser approves the request
token = gcp.fetch_token(
token_url,
client_secret=app.config['gcp_client_secret'],
authorization_response=request.url)
Run Code Online (Sandbox Code Playgroud)
令牌refresh_token在运行时有,localhost但在云中运行时没有.
此Google文档讨论了刷新令牌,表明Web应用程序支持此功能.
[更新11/18/2018]
我发现这个 …
google-openid oauth-2.0 google-oauth google-cloud-platform requests-oauthlib
google-openid ×10
openid ×6
oauth-2.0 ×4
google-oauth ×2
acs ×1
asp.net ×1
google-apps ×1
httpsession ×1
login ×1
openid4java ×1
servlets ×1
spring ×1
yahoo-oauth ×1