我试图使用谷歌 Openid 提供程序在 Java 中实现 OpenId。我读到我们需要做response.sendRedirect()
这给了我一个 XML 文档作为回报,这意味着它要求我保存一个 XRDS 文档。我不知道如何在 servlet 中处理这个文件。如果有人解决这个简单的问题,那将是很大的帮助。
我试图使用谷歌 Openid 提供程序在 Java 中实现 OpenId。我读到我们需要做response.sendRedirect()
这给了我一个 XML 文档作为回报,这意味着它要求我保存一个 XRDS 文档。我不知道如何在 servlet 中处理这个文件。如果有人解决这个简单的问题,那将是很大的帮助。
不确定您是否知道openid4java - 它是一个 openid 库,它应该具有您正在寻找的功能。无论您决定是否使用它,请查看示例使用者代码,如果您决定不使用该库,它应该为您提供如何自己检索和解析 XRDS 的想法。
例如,使用 openid4java 库,您可以使用以下简单的方式获取 Google 端点:
import java.util.List;
import org.openid4java.consumer.ConsumerManager;
import org.openid4java.discovery.DiscoveryException;
import org.openid4java.discovery.DiscoveryInformation;
public class XRDSConsumer {
public static void main(String[] args) {
ConsumerManager manager = new ConsumerManager();
try {
//get XRDS from Google discovery url
List<DiscoveryInformation> discoveries =
manager.discover("https://www.google.com/accounts/o8/id");
for(DiscoveryInformation info: discoveries) {
//will get something like: https://www.google.com/accounts/o8/ud
System.out.println(info.getOPEndpoint());
}
} catch (DiscoveryException e) {
e.printStackTrace();
}
}
}