我尝试使用Google Openid提供程序在Java中实现OpenId。我读到我们需要response.sendRedirect()
这给了我一个XML文档作为回报,这意味着它要求我保存一个XRDS文档。我不知道如何在servlet中处理这个文件。如果有人解决这个简单问题,那将会很有帮助。
答案 0 :(得分:0)
不确定您是否知道openid4java - 它是一个openid库,它应该具有您正在寻找的功能。无论您是否决定使用此功能,请查看sample consumer code,如果您决定不使用该库,它应该让您了解如何自行检索和解析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();
}
}
}