единый вход (OpenID, OAuth и т. д.) с помощью Java-апплета? - PullRequest
0 голосов
/ 16 марта 2011

В нашей системе мы теперь используем архитектуру с клиентом апплета Java (встроенным в тупые HTML-страницы) и сервером Java, взаимодействующим через сокеты (через SSL).

Пользователи должны войти в систему, используя имя пользователя и пароль (возможно, не разглашаемые) - пароль затем сохраняется в хешированном виде в нашей базе данных.

Недавно прочитав Джеффа * Ваше интернет-водительское удостоверение , я думаю о том, чтобы позволить нашим пользователям войти в систему с альтернативными механизмами, такими как OpenID, чтобы им не приходилось запоминать имя пользователя и пароль, но мы все еще знаем Пользователь - тот же, который вошел в систему за день до этого с другого компьютера.

Насколько я понимаю, OpenID работает с использованием перенаправлений браузера в сочетании с некоторой криптографией на стороне сервера. Это выглядит сложно (если не невозможно) в сочетании с нашим апплетом (или апплетом в сочетании с сервером, отличным от HTTP), который должен разрешить вход в систему здесь.

OAuth либо использует похожий механизм, либо какой-то токен, предоставленный пользователю, который пользователь затем вводит в мой апплет. Апплет должен будет хранить этот токен на клиенте (для JNLP PersistenceService или подобного), чтобы разрешить повторный вход в систему, но это будет означать, что для каждого компьютера будет получен новый токен, а не просто позволить нескольким пользователям совместно использовать компьютер (учетную запись), и не очень сильно упростит вход в систему.

Существуют ли другие способы, которые можно использовать здесь для включения системы единого входа, или это просто невозможно без хотя бы получения некоторого кода на стороне HTTP-сервера для передачи учетных данных в наш апплет?

1 Ответ

0 голосов
/ 16 марта 2011

Вы можете использовать OpenId для входа пользователей вне апплета, используя одну из библиотек OpenId . Это будет нормальный поток, включая процессы на стороне сервера и перенаправление пользователя на страницу поставщика OpenId. Затем вы передаете идентификатор пользователя в апплет:

<object codetype="application/java" ...>
    <param name="user" value="myOpenId">
</object>

Затем вы можете аутентифицировать пользователя, используя this.getParameter("user").

...