Как записать веб-сервис Java, чтобы сделать удаленный вход в систему?

Рассматривали ли вы добавление заголовка в файл?

То есть, поместите специальную структуру в начало файла, которая сообщает вам некоторую информацию о файле. Нечто подобное ...

struct file_header {
    char      id[32];        /* Let this contain a special identifying string */
    uint32_t  version;       /* version number in case the file structure changes */
    uint32_t  num_material;  /* number of material structures in file */
};

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

Если хотите, можете даже добавить проверку ошибок.

6
задан Kip 6 December 2008 в 13:32
поделиться

6 ответов

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

0
ответ дан 17 December 2019 в 04:53
поделиться

Принятие их является веб-приложениями - необходимо реализовать некоторый тип общей доверительной модели между приложениями.

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

Здесь следуют за опциями: 1 - Если все запускают Windows - Вы могли просто Windows Native Authentication (иначе SPNEGO) 2 - Вы могли реализовать некоторый тип системы SSO. Популярными системами является CAS, менеджер по Доступу Oracle, CA SiteMinder, Sun SSO и IBM менеджер по Доступу Tivoli. В то время как CAS является открытым исходным кодом, другие также позволят Вам реализовывать авторизацию также, в то время как CAS только делает аутентификацию.

Наконец - удостоверяются любая опция, которую Вы выбираете - что она интегрируется с собственной аутентификацией Вашего языка и инфраструктурой авторизации. В Java это было бы JAAS. В.NET это была бы концепция безопасности.NET. Для PHP/Perl - можно усилить модули Apache. Преимущество - то, что Вы не должны становиться специалистом по безопасности, и это поможет использовать внешние системы для аутентификации и авторизации, не имея необходимость повторно кодировать Ваше приложение.

3
ответ дан 17 December 2019 в 04:53
поделиться

Вы могли использовать схему аутентификации с открытым ключом.

Создайте пару ключей с открытым ключом и закрытым ключом (использование keytool Java, GNU GPG или подобный инструмент). Используйте закрытый ключ, чтобы подписать информацию (например, имя пользователя) на приложении A и создать ссылку на приложение B, которое доступно из приложения A и содержит данные со знаком. Приложение B может затем зарегистрировать пользователя в после проверки с открытым ключом, что запрос действительно прибыл из приложения A (который это должно иметь, если это может дешифровать строку).

Вы могли, конечно, создать противоположную пару ключей для навигации по другому пути также, или Вы могли просто использовать открытый ключ и держать его в секрете (эффективно создание его общая секретная система).

Если пользователь пытается получить доступ к приложению B непосредственно, Вы могли бы также перенаправить его к приложению A с параметром, который говорит, что он произошел из приложения B (или сделайте проверку ссылающегося домена). Если он уже зарегистрирован на приложении A, создают ссылку с данными со знаком и перенаправлением к нему, иначе дарят ему экран входа в систему и перенаправление после входа в систему.

Надежда, которая помогает!

2
ответ дан 17 December 2019 в 04:53
поделиться

Вы используете сервер приложений? Какова среда для Ваших приложений?

Существует стандарт для распространения идентификационных данных с помощью веб-сервисов, названных безопасностью веб-сервиса Профиль UsernameToken. Вот быстрый обзор. Можно отправить имя пользователя/пароль или различные маркеры, такие как сертификат X.509 или утверждение SAML. Некоторые стопки веб-сервисов серверов приложений обработают Профиль WSS UsernameToken, JBoss, Websphere и WebLogic. Иначе код веб-сервиса должен обработать его. Этот подход может быть слишком громоздким в зависимости от Вашей среды.

Существует стандарт для единой точки входа, названной SAML. Снова, это может быть слишком тяжелым весом для Вашего примера использования.

0
ответ дан 17 December 2019 в 04:53
поделиться

Если приложения размещаются в том же сервере, то Вы могли настроить его для использования единой точки входа. Например, в Tomcat это достигается с Клапаном.

Если приложения находятся в различных средах, то защищенный веб-сервис является хорошей идеей. Вы могли, например, создать общественность - пара с закрытым ключом и иметь приложение b (сервер), аутентифицирующий приложение a (клиент) на клиентском сертификате. Это означает что приложение знак желания все запросы к приложению b с клиентским сертификатом. Больше деталей об архитектуре необходимо для полного решения.

0
ответ дан 17 December 2019 в 04:53
поделиться

На земле Oracle я знаю, что существует понятие доверяемого приложения. В основном, если Вы имеете контроль над обоими приложениями, можно настроить его как так:

Приложение A отправляет Приложение B, 1), имя пользователя A Приложения и пароль и 2) имя пользователя текущего пользователя. Так как B знает и доверяет Приложению A, это не должно проверять учетные данные пользователя, так как это знает, что приложение A уже сделало это для него.

Я предполагаю, что, если у Вас есть пользовательское приложение B Вы, смог делать что-то вроде этого. Если Ваша поддержка внедрения SSO это затем Вы, вероятно, не должны делать много кроме дизайна Ваши веб-сервисы.

Удачи

0
ответ дан 17 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: