问题标签 [openid4java]
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.
java - 如何找到 OpenId 提供者支持的属性扩展?
我一直在查看http://code.google.com/p/openid4java/wiki/SampleConsumer并且它被硬编码以使用类型“ fetch_request
”。想要哪种类型是否重要,有没有办法告诉或可以只使用 Fetch 请求。
java - 如何将 OpenID 登录身份验证实现 (Java) 与 JBoss 集成
我已经实现了一项服务,该服务使用 openid4java 库执行 OpenID 登录身份验证所需的操作。
申请流程如下
- 用于从用户获取 OpenID 的 JSP 页面
- JSP 页面的操作 servlet
- Servlet 获取 openid 参数,与服务交互以获取所需的信息,以将用户重定向到实际的 OpenID 提供者进行身份验证。
- 提供给 OpenID 提供者的返回 url 是另一个 servlet。
- 这个 servlet 从 open id 提供者发送的响应中检索所需的信息,然后与服务交互以检查用户是否通过了 open id 提供者的身份验证。
- 如果用户通过身份验证,则 servlet 将用户重定向到主页。
如果您了解我的实施方法,请接受我的以下查询,否则请告诉我,以便我付出更多努力使其易于理解
查询我正在使用 JBoss 5 应用程序服务器。在上面的代码中,我只是获取用户是否经过身份验证的信息,但我需要通知 jboss 一些它应该如何允许用户访问受限资源,即查看网页。
通常我们使用继承org.jboss.security.auth.spi.UsernamePasswordLoginModule
的自定义登录模块类进行基于数据库的身份验证(调用服务方法来获取数据库身份验证信息)。但在这种情况下,我需要 servlet 作为服务、用户和 OpenID 提供者之间的通信通道。那么我应该如何集成 servlet 和登录模块实现。
我可能面临的另一个问题是我正在使用两个已实现的 servlet 之间的会话来存储和检索DiscoveryInformation
对象。我认为在用户未登录之前无法访问会话。
我遵循的实现方法基于文章http://www.theserverside.com/news/1364125/Using-OpenID
请帮帮我谢谢
java - Java Servlet 行为问题
我目前正在使用 OpenID4Java 库通过 Java HttpServlets 实现 OpenID 依赖方 (RP) 和身份提供者 (IdP)。我在让两个 servlet 相互通信时遇到了麻烦。我相信我遇到的问题是更多地处理 Servlet 的行为方式,但是我已经包含了有关我的应用程序的信息,以便更好地了解正在发生的事情。
场景如下:
Servlet #1(我的 RP)向 Servlet #2(我的 IdP)发送请求,如下所示:
本质上 authReq = 带有各种 OpenID 特定参数的消息。通过调用 getDestinationUrl(true),它将请求编码为 url 以通过 GET 发送。
Servlet #2 在其 doGet 方法中捕获上述 GET。它解析信息,并以下列方式制作回复以发送回 Servlet #1:
字符串 responseText = processRequest(httpReq, httpResp);
我的问题是,这个响应永远不会回到 Servlet #1。我希望当服务器 #1 收到来自 Servlet #2 的响应时,它的 doGet 或 doPost 方法会捕获该消息。然而,这两种情况都没有发生。
任何建议将不胜感激。
谢谢!
java - Spring Security 3.0 Google Apps open id 使用 OpenID4Java 登录
我尝试使用带有 OpenID4Java 库的 Google Apps 开放 ID 登录。
我在消费者类中使用以下代码发现用户的服务:
接下来,我从 http 请求中获取参数,并在 openid.claimed_id 属性中收到“ http://domain.com/openid?id= ....”,如果我尝试验证响应consumerManager.verify(receivingURL.toString(), openidResp, discovered);
,则会引发异常:。org.openid4java.discovery.yadis.YadisException: 0x706: GET failed on http://domain.com/openid?id=... : 404:Not Found
为避免异常,我尝试修改参数列表,将值“ http://domain.com/openid?id= ....”更改为“ https://www.google.com/a/domain.com/ openid?id= ....”
现在该方法consumerManager.verify
不再抛出异常,但其状态更改为失败。在日志中出现以下错误
我在论坛上看到类似的问题,但解决方案是更改consumerManager.verify
为consumerManager.verifyNonce
. 我不确定使用这种方法是否会产生安全问题。你知道我应该改变什么来让我的 open id 消费者与 Google Apps openid 一起工作吗?
web-services - openid4java ConsumerManager 请求/线程安全吗?
我在 servlet 中使用 openid4java。我有两个 servlet - 一个执行第一步(将用户重定向到登录/接受应用程序访问),第二个处理结果信息
在文档中,写到 org.openid4java.consumer.ConsumerManager 类在两个步骤中必须是相同的实例。我可以为此创建单例吗?它是线程和请求安全的吗?
感谢您的回复!
spring-security - 如何或何时关注重定向的 OpenID?
我目前正在为网站实施 OpenID 身份验证。在测试期间,我注意到 Google 接受不同版本的已声明 Google 个人资料 ID,例如:
- http://www.google.com/profiles/stefan.fussenegger
- http://profiles.google.com/u/0/stefan.fussenegger/about
- https://profiles.google.com/stefan.fussenegger
- https://profiles.google.com/stefanfussenegger
有趣的是,经过验证的 ID 也不同(对于上面的示例,相同的顺序):
- http://www.google.com/profiles/stefan.fussenegger
- https://profiles.google.com/stefanfussenegger
- https://profiles.google.com/stefan.fussenegger
- https://profiles.google.com/stefanfussenegger
当然,这使得查找关联的用户帐户变得相当困难,并不是说不可能。有趣的是,上述所有 ID 都适用于 Stackoverflow。所以我认为在我的实现中必须有一些规范化步骤 - 或者 SO 做了一些专门的巫术来把事情弄清楚。
查看OpenID 身份验证规范的 7.2 规范化,我发现:
然后,URL 标识符必须在检索其内容时通过以下重定向进一步规范化,最后将 [RFC3986] 第 6 节中的规则应用于最终目标 URL。依赖方必须将这个最终 URL 记录为声明的标识符,并在请求身份验证时使用。
对声明的 ID 进行重定向并没有太大帮助,因为我仍然有两个不同的 ID:
查看已验证 ID 的重定向会更有帮助,因为我总是以这个结尾:
好的,看来我应该关注已验证 ID 的重定向,而不是声明的 ID。
现在的问题:跟踪声明/验证 ID 的重定向是否安全,例如在搜索数据库之前,如下所示:
如果是,我怀疑这不仅应该在查找用户时完成,而且在存储新 ID 时也应该这样做,对吧?
(如果我真的应该遵循重定向,我还有一个关于潜在恶意重定向的问题,但这必须等到我得到这个问题的答案。无论如何可能已经过时了)
java - openid4java的Maven“无法解决依赖关系”
摘要:
运行“mvn war:war”失败,错误包括:
“无法解析以下工件:org.openid4java:openid4java:jar:0.9.6”。
我将其归结为我是一个 Maven 菜鸟,但我看到其他人已经发布到openid4java网站,说明Maven 中心缺少用于 openid4java 的 jars 。
详细信息:
我正在尝试通过运行最新版本的 openid4java (0.9.6.662) 中包含的 Simple-OpenID 示例应用程序来加快使用 openid4java 的速度。
根据自述文件“这个演示需要apache Maven2 来构建”。自述文件还指出“mvn war:war 任务应该创建一个可以通过复制战争文件来部署的战争文件”。
到目前为止,我一直在使用 Ant 和 Mavent Ant Tasks,但我想我今天会硬着头皮安装 Maven 3.0.3。我按照安装说明进行操作,现在可以成功运行“mvn --version”
当我运行“mvn war:war”时,确实有许多文件被下载到我的本地存储库,但最终构建失败并显示以下摘录消息:
我在这里做错了什么还是Maven存储库中实际上缺少罐子?
java - 如何运行 OpenId4Java 应用引擎示例应用?
OpenId4Java 在其示例代码中有一个 appengine-consumer。但是,虽然我可以构建示例,但我不知道如何运行它。mvn jetty:run 失败,似乎没有另一个明显的启动机制。
我正在使用 maven gae 插件开发我的其他项目,并使用 mvn gae:run 或通过 IntelliJ AppEngine 应用程序配置启动它们。
那么如何运行示例应用程序呢?
session - 如何使用 openid4java API 注销?
与提供者验证/验证后,我想从提供者应用程序中注销(或使提供者应用程序会话无效)。请让我知道要使用哪个 openid4java API。
注意: InMemoryConsumerAssociationStore.remove(opURL, handle) 不起作用。
谢谢!
oauth - 使用 openid4java 的 YouTube 的 OpenID+OAuth
我的应用程序允许用户使用来自 Google 或 Yahoo 的 OpenID 登录。还有一项功能允许用户上传到 YouTube。一些用户通过 YouTube 上下文到达,目的是创建内容并上传到 YouTube。这些用户需要授权我的应用程序通过 OpenID 访问他们的 Google 帐户上的地址,以及通过 OAuth 访问他们的 YouTube 帐户。我希望通过单击用户的一次授权来实现这一点。
我在这里看到过这个: http: //www.youtube.com/create/Xtranormal。从这个应用程序发送到 Google OpenID 端点的请求是:
应用程序上的所有其他 OpenID 支持(运行良好)都是用 OpenID4Java 编写的。我尝试通过实施This answer中的提示来创建类似的请求,但是,我一生都无法让 Google 弹出窗口向我询问 YouTube,它只询问电子邮件地址。
我通过添加此消息扩展名来添加答案中的参数:
这使我的请求看起来像这样:
我在这里想念什么?