Использование открытого идентификатора с движком приложения Google
У меня есть приложение, работающее на движке приложений Google. Я хочу изменить вход в систему с помощью Google, чтобы использовать открытый идентификатор, в Java.
Итак, я попытался следовать этому руководству:
http://code.google.com/appengine/articles/openid.html
Я изменил аутентификацию на федеративный вход в систему на панели настроек приложения.
Я положил это в web.xml:
<servlet> <servlet-name>LoginRequiredServlet</servlet-name> <servlet-class>XXXXXX.server.LoginRequiredServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginRequiredServlet</servlet-name> <url-pattern>/_ah/login_required</url-pattern> </servlet-mapping>
Я создал класс LoginRequiredServlet с кодом, который находится по ссылке выше. Я переименовал их класс OpenIdDemoServlet в LoginRequiredServlet.
Я перераспределил. Перейдя на мою целевую страницу, мне понадобится только страница входа в Google. Что именно я должен сделать, чтобы он мог показать несколько ссылок на других поставщиков OpenID?
Что мне не хватает?
Благодарю.
1 ответ
Попробуйте, я цитирую http://code.google.com/appengine/articles/openid.html за исключением того, что я изменил имя класса с OpenIdDemoServlet на LoginRequiredServlet.
@SuppressWarnings ("serial") открытый класс LoginRequiredServlet extends HttpServlet {
private static final Map<String, String> openIdProviders;
static {
openIdProviders = new HashMap<String, String>();
openIdProviders.put("Google", "google.com/accounts/o8/id");
openIdProviders.put("Yahoo", "yahoo.com");
openIdProviders.put("MySpace", "myspace.com");
openIdProviders.put("AOL", "aol.com");
openIdProviders.put("MyOpenId.com", "myopenid.com");
}
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
UserService userService = UserServiceFactory.getUserService();
User user = userService.getCurrentUser(); // or req.getUserPrincipal()
Set<String> attributes = new HashSet();
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
if (user != null) {
out.println("Hello <i>" + user.getNickname() + "</i>!");
out.println("[<a href=\""
+ userService.createLogoutURL(req.getRequestURI())
+ "\">sign out</a>]");
} else {
out.println("Hello world! Sign in at: ");
for (String providerName : openIdProviders.keySet()) {
String providerUrl = openIdProviders.get(providerName);
String loginUrl = userService.createLoginURL(req
.getRequestURI(), null, providerUrl, attributes);
out.println("[<a href=\"" + loginUrl + "\">" + providerName + "</a>] ");
}
}
}
}
Также обновите ваш web.xml, чтобы принудительно войти в систему. Приведенный ниже код будет принудительно регистрировать все URL-адреса на веб-сайте.