1

Что я сделалSpring Security OAuth2 JWT анонимного маркера

Сначала я принимаю, что я не хватаю знаний весны безопасности.

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

Предположим, у меня есть один сервис "http://localhost:8282/melayer/articles" и когда я запускаю следующую команду

(1). свернуться -X POST -vu melayer: 12345 http://localhost:8282/melayer/oauth/token -H "Accept: приложения/JSON" -d "пароль = melayer & имя пользователя = melayer & grant_type = пароль & сфера = & написать client_secret = 12345 & client_id = melayer"

Я могу получить access_token, refresh_token и т. Д. Все работает фантастично, даже я могу получить доступ к адресу http://localhost:8282/melayer/articles с полученным acces_token

(2). локон http://localhost:8282/melayer/articles -Н «Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NjA3NzY5NDIsInVzZXJfbmFtZSI6ImVjb2tyeXB0IiwianRpIjoiNWI5ZmE4NjYtMTBlNS00NDA2LTgxYmMtYjM3NWVmNGE0ZmQ1IiwiY2xpZW50X2lkIjoiZWNva3J5cHQiLCJzY29wZSI6WyJ3cml0ZSJdfQ.4jO9euBz4TSSNh7M3l2YBD1QPblE0ZyOfGm4VtyFMFY»

То, что я хочу, чтобы понять

Я хочу получать access_token анонимно т.е. я не хочу, чтобы передать имя пользователя, пароль или секрет клиента, я хотите запустить команду curl следующим образом:

curl -X POST http://localhost:8282/melayer/oauth/token -H "Accept: application/json"

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

Это своего рода просьба помочь мне в этом :)

Если кто-то хочет видеть мой код, пожалуйста, обратитесь GIT Repo https://github.com/aniruddhha/spring-security-oauth2-jwt

ответ

1

Я думаю, что вы Misunderstood маркер концепции доступа, маркеры доступа предназначены для используемый от имени аутентифицированного пользователя.

OAuth2 поддерживает различные типы грантов (пароль, authorization_code и т.д.), проверьте спецификации Oauth2 Spec

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

маркер доступа не может быть использован в качестве своего рода ApiKey используется для доступа к общим API

+0

@Override общественного Configure недействительным (AuthorizationServerSecurityConfigurer oauthServer) бросает исключение { oauthServer .tokenKeyAccess ("isAnonymous() || hasRole (» ROLE_TRUSTED_CLIENT ') ") // allowAll() .checkTokenAccess ("hasRole ('TRUSTED_CLIENT')"); // isAuthenticated() } см. этот код .. Я думаю, что этот код предназначен для анонимного токена доступа ... я не уверен – Ani

+0

Мне жаль, я не уверен в этом, так как я не использовал Spring security framework, i думайте, что все его проверки - это если oauth-клиент находится под доверенным списком clientIds (возможно, я ошибаюсь). Если вы прочитаете спецификацию oauth, вы поймете цель токена доступа –

+0

, если вы действительно хотите анонимный access_token, который аутентифицирует только клиента, а не пользователя, тогда ваш сервер oauth должен предоставить пользовательскую реализацию, но для этого требуется клиент credentials (client_id, client_secret или оба) Но вы упомянули, не передавая учетные данные пользователя и учетные данные клиента. В этом случае идентификация здесь не происходит, поскольку любой может генерировать токен, я точно не получаю прецедент. –

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