问题标签 [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.

0 投票
2 回答
84 浏览

java - 如何找到 OpenId 提供者支持的属性扩展?

我一直在查看http://code.google.com/p/openid4java/wiki/SampleConsumer并且它被硬编码以使用类型“ fetch_request”。想要哪种类型是否重要,有没有办法告诉或可以只使用 Fetch 请求。

0 投票
1 回答
2380 浏览

java - 如何将 OpenID 登录身份验证实现 (Java) 与 JBoss 集成

我已经实现了一项服务,该服务使用 openid4java 库执行 OpenID 登录身份验证所需的操作。

申请流程如下

  1. 用于从用户获取 OpenID 的 JSP 页面
  2. JSP 页面的操作 servlet
  3. Servlet 获取 openid 参数,与服务交互以获取所需的信息,以将用户重定向到实际的 OpenID 提供者进行身份验证。
  4. 提供给 OpenID 提供者的返回 url 是另一个 servlet。
  5. 这个 servlet 从 open id 提供者发送的响应中检索所需的信息,然后与服务交互以检查用户是否通过了 open id 提供者的身份验证。
  6. 如果用户通过身份验证,则 servlet 将用户重定向到主页。

如果您了解我的实施方法,请接受我的以下查询,否则请告诉我,以便我付出更多努力使其易于理解

查询我正在使用 JBoss 5 应用程序服务器。在上面的代码中,我只是获取用户是否经过身份验证的信息,但我需要通知 jboss 一些它应该如何允许用户访问受限资源,即查看网页。

通常我们使用继承org.jboss.security.auth.spi.UsernamePasswordLoginModule的自定义登录模块类进行基于数据库的身份验证(调用服务方法来获取数据库身份验证信息)。但在这种情况下,我需要 servlet 作为服务、用户和 OpenID 提供者之间的通信通道。那么我应该如何集成 servlet 和登录模块实现。

我可能面临的另一个问题是我正在使用两个已实现的 servlet 之间的会话来存储和检索DiscoveryInformation对象。我认为在用户未登录之前无法访问会话。

我遵循的实现方法基于文章http://www.theserverside.com/news/1364125/Using-OpenID

请帮帮我谢谢

0 投票
3 回答
252 浏览

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 方法会捕获该消息。然而,这两种情况都没有发生。

任何建议将不胜感激。

谢谢!

0 投票
1 回答
1707 浏览

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.verifyconsumerManager.verifyNonce. 我不确定使用这种方法是否会产生安全问题。你知道我应该改变什么来让我的 open id 消费者与 Google Apps openid 一起工作吗?

0 投票
2 回答
1396 浏览

web-services - openid4java ConsumerManager 请求/线程安全吗?

我在 servlet 中使用 openid4java。我有两个 servlet - 一个执行第一步(将用户重定向到登录/接受应用程序访问),第二个处理结果信息

在文档中,写到 org.openid4java.consumer.ConsumerManager 类在两个步骤中必须是相同的实例。我可以为此创建单例吗?它是线程和请求安全的吗?

感谢您的回复!

0 投票
2 回答
397 浏览

spring-security - 如何或何时关注重定向的 OpenID?

我目前正在为网站实施 OpenID 身份验证。在测试期间,我注意到 Google 接受不同版本的已声明 Google 个人资料 ID,例如:

有趣的是,经过验证的 ID 也不同(对于上面的示例,相同的顺序):

当然,这使得查找关联的用户帐户变得相当困难,并不是说不可能。有趣的是,上述所有 ID 都适用于 Stackoverflow。所以我认为在我的实现中必须有一些规范化步骤 - 或者 SO 做了一些专门的巫术来把事情弄清楚。

查看OpenID 身份验证规范的 7.2 规范化,我发现:

然后,URL 标识符必须在检索其内容时通过以下重定向进一步规范化,最后将 [RFC3986] 第 6 节中的规则应用于最终目标 URL。依赖方必须将这个最终 URL 记录为声明的标识符,并在请求身份验证时使用。

对声明的 ID 进行重定向并没有太大帮助,因为我仍然有两个不同的 ID:

查看已验证 ID 的重定向会更有帮助,因为我总是以这个结尾:

好的,看来我应该关注已验证 ID 的重定向,而不是声明的 ID。

现在的问题:跟踪声明/验证 ID 的重定向是否安全,例如在搜索数据库之前,如下所示:

如果是,我怀疑这不仅应该在查找用户时完成,而且在存储新 ID 时也应该这样做,对吧?

(如果我真的应该遵循重定向,我还有一个关于潜在恶意重定向的问题,但这必须等到我得到这个问题的答案。无论如何可能已经过时了)

0 投票
5 回答
7697 浏览

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存储库中实际上缺少罐子?

0 投票
1 回答
387 浏览

java - 如何运行 OpenId4Java 应用引擎示例应用?

OpenId4Java 在其示例代码中有一个 appengine-consumer。但是,虽然我可以构建示例,但我不知道如何运行它。mvn jetty:run 失败,似乎没有另一个明显的启动机制。

我正在使用 maven gae 插件开发我的其他项目,并使用 mvn gae:run 或通过 IntelliJ AppEngine 应用程序配置启动它们。

那么如何运行示例应用程序呢?

0 投票
1 回答
325 浏览

session - 如何使用 openid4java API 注销?

与提供者验证/验证后,我想从提供者应用程序中注销(或使提供者应用程序会话无效)。请让我知道要使用哪个 openid4java API。

注意: InMemoryConsumerAssociationStore.remove(opURL, handle) 不起作用。

谢谢!

0 投票
1 回答
1312 浏览

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,它只询问电子邮件地址。

我通过添加此消息扩展名来添加答案中的参数:

这使我的请求看起来像这样:

我在这里想念什么?