Несмотря на то, что ответ @ sri дает хорошие замечания, совет «просто передать идентификатор / токен сеанса» опасен, поскольку его слишком легко подделать. Вам необходимо установить общий контекст, который проверен доверенным источником. Посмотрите на org.ietf.jgss.GSSContext
для деталей об этом.
Чтобы заставить работать контекст GSS, вы познакомитесь с концепцией Центра распространения ключей (KDC) , которая обычно приводит к Kerberos и обычному серверу каталогов - извините, я Я немного расплывчат, но не зная, что у вас на месте, сложно быть конкретным, и даже тогда я делал это только с Active Directory.
Как только вы все аутентифицируете, вы можете вернуться к исходной точке защиты определенных функций.
Процесс аутентификации предоставит javax.security.auth.Subject
, который будет содержать один или несколько java.security.Principal
s. Эти принципалы можно использовать с JAAS для создания файла политики, в котором используются принципалы, как описано здесь . Обычно вы используете принципала для представления ролей пользователя, которые загружаются с сервера каталогов. В прошлом я специализировал модуль входа в систему, чтобы сделать это, хотя может быть лучший способ.
Здесь все заперто, поэтому последний шаг - сделать так, чтобы он выглядел симпатично для пользователя, и здесь, насколько мне известно, вы сами. Вы можете просто оставить все включенным и предупредить пользователя, если операция не может быть выполнена или, поскольку у вас есть предмет, сделать что-то более сложное, основанное на членстве в группе.