2016-09-08 10 views
2

Я новичок в Сиро. Мы пытаемся использовать Сиро с Stormpath. Я пытаюсь проанализировать примеры, чтобы найти решение того, что я хочу сделать, но пока я не увенчался успехом.Shiro/Stormpath через REST

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

Я хочу, чтобы клиент ударил конечную точку REST (логин) на моем сервере. Мой сервер будет аутентифицироваться и вернуть JWT клиенту. Этот JWT затем будет использоваться для доступа к защищенным конечным точкам на моем сервере. (Я написал код Java, который может успешно пройти проверку на Stormpath).

Моя проблема - JWT. Я ожидал, что JWT будет создан для меня или, по крайней мере, легко доступен. Я не могу найти способ его получить. Я видел пример кода о том, как его создать, но это не похоже на то, как я ожидал бы его приобрести.

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

Этот подход разумный? Любые рекомендации приветствуются.

Edit 1

теперь у меня есть клиент, Java, которые могут проходить проверку подлинности с помощью сервлета Shiro и извлечения JWT. У меня это работает как развернутое приложение (war) в GlassFish. Следующим моим шагом будет использование этого JWT для аутентификации против другого приложения с моими конечными точками REST. Это приложение REST не нуждается в знании об аутентификации - я просто хочу передать JWT в вызове данной конечной точке REST и использовать Shiro (через аннотации) для контроля доступа к конечной точке (если это действительно возможно). Все примеры, которые я могу найти, кажутся примерами «все-в-одном» (объединение JSP с конфигурациями Shiro/Stormpath и т. Д.). Я пытаюсь определить минимальную рабочую конфигурацию для защиты конечных точек REST, и мне трудно определить, какие части конфигурации мне нужны.

Edit 2

Я использую Stormpath-Сиро-сервлет (украденный из примера Shiro Servlet), как моя аутентификации фоновая. Используя мой Java-клиент, я отправляю запрос на регистрацию на сервлет, и я действительно получаю JWT. Однако я не могу успешно использовать JWT для доступа к другим остальным ресурсам. Мои остальные вызовы приводят к ошибке:

org.apache.shiro.authz.UnauthenticatedException: This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check against. A Subject instance will acquire these identifying principals automatically after a successful login is performed be executing org.apache.shiro.subject.Subject.login(AuthenticationToken) or when 'Remember Me' functionality is enabled by the SecurityManager. This exception can also occur when a previously logged-in Subject has logged out which makes it anonymous again. Because an identity is currently not known due to any of these conditions, authorization is denied.

Во-первых, я не понимаю, почему сервлет «Логин» на самом деле не войти меня и дать мне неанонимный принцип? Во-вторых, я пытаюсь сделать все на отдельном клиенте, поэтому у меня нет доступа к Subject.login (это правильное предположение?).

+0

Как выглядит ваш запрос по проводу? Можете ли вы запечатлеть его и опубликовать здесь (цензура при необходимости)? –

+0

Я снова застрял. Я нажимаю сервлет на обоих/login и/oath/token. Я получаю ответ назад, и он выглядит отлично в том смысле, что мой URL-адрес учетной записи Stormpath верен. Я предполагаю, что это означает, что моя конфигурация верна, потому что URI учетной записи должен быть возвращен с сервера Stormpath. Но я не вижу никаких групп или претензий. Я проверил JWT с отладчиком JWT и анализатором JWT и инспектором. У меня есть 'stormpath.web.oauth2.authorizer.secure.resolver = com.stormpath.sdk.servlet.config.SecureResolverFactory' настроенный, если это фактор. –

ответ

2

Посмотрите на this example от github/stormpath-shiro

Создание JWT управляется для вас по API Stormpath. Если вы запустите один из примеров (сервлет один выше или пример Spring-boot-web), после входа в систему вы будете иметь cookie JWT. Есть справочная информация в this blog post.

Я сейчас работаю над выпуском strompath-shiro, но предположил, что включу сюда эту ссылку, чтобы вы могли начать искать.

+0

Я видел и то, и другое - сообщение в блоге было одной из причин, по которым мне казалось, что мне придется «раскрутить мое собственное» решение JWT. Что касается этого примера, я также попытался заставить его работать без успеха. Я получаю 'java.lang.IllegalStateException: конфигурация приложения не имеет свойства stormpath.application.href. 'Я установил переменные окружения, задал переменные в Maven/Jetty, попытался добавить файл stormpath.properties, но не имел успеха. –

+0

После большой отладки я нашел единственный способ заставить работу приложения-примера иметь только одно приложение в Stormpath, отличном от приложения «Stormpath» по умолчанию. –

+0

@ ben_979 Это может быть ошибка. Задание приложения «href» должно позволить вам выбрать одно приложение из многих. Можете ли вы сообщить об этом на github/stormpath-shiro? –

 Смежные вопросы

  • Нет связанных вопросов^_^