Я пытаюсь настроить LexikJWTAuthenticationBundle для использования в проекте на основе платформы API.
Этот API добавляется в существующий проект, использующий Sulu CMS (2.6.2). и Symfony (6.4.7). Я использую PHP 8.3, у меня установлен и включен OpenSSL.
Я хотел бы иметь возможность использовать функцию веб-токена LexikJWTAuthenticationBundle. Мне удалось заставить работать следующую конфигурацию, основанную на настройках пакета по умолчанию:
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
api_platform:
enabled: true
check_path: /api/login_check
username_path: username
password_path: password
encoder:
service: lexik_jwt_authentication.encoder.lcobucci
signature_algorithm: ES512
token_ttl: 3600
allow_no_expiration: false
clock_skew: 0
user_id_claim: username
token_extractors:
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
cookie:
enabled: false
name: BEARER
query_parameter:
enabled: false
name: bearer
split_cookie:
enabled: false
cookies: { }
remove_token_from_body_when_cookies_used: true
set_cookies: { }
Я следовал документации по настройке функции веб-токена. К сожалению, все портится, как только я перехожу на использование lexik_jwt_authentication.encoder.web_token. Токены JWT всегда недействительны.
Я написал собственную службу поставщика пользователей, чтобы избежать конфликтов с Sulu, и проверил, что она работает с кодировщиком пакета по умолчанию.
Моя конфигурация пакета после перехода на кодировщик веб-токенов:
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
api_platform:
enabled: true
check_path: /api/login_check
username_path: username
password_path: password
encoder:
service: lexik_jwt_authentication.encoder.web_token
signature_algorithm: ES512
token_ttl: 3600
allow_no_expiration: false
clock_skew: 0
user_id_claim: username
token_extractors:
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
cookie:
enabled: false
name: BEARER
query_parameter:
enabled: false
name: bearer
split_cookie:
enabled: false
cookies: { }
remove_token_from_body_when_cookies_used: true
set_cookies: { }
access_token_issuance:
enabled: true
signature:
algorithm: ES512
key: # key
access_token_verification:
enabled: true
signature:
allowed_algorithms:
- ES512
keyset: # keyset
header_checkers: { }
claim_checkers:
- exp_with_clock_skew
- iat_with_clock_skew
- nbf_with_clock_skew
mandatory_claims: { }
blocklist_token:
enabled: false
cache: cache.app
Как я запрашиваю токен:
curl -X POST http://localhost/api/login_check \
-H "Content-Type: application/json" \
-d '{"username":"someusername","password":"somepassword"}'
Запрос, который я делаю после получения токена:
curl -H "Authorization: Bearer " http://localhost/api/some-endpoint/4
Мне удалось отследить проблему вплоть до этапа загрузки и декодирования токена. Он правильно десериализован и разбит на массив. После этого момента он терпит неудачу. Это заставляет меня подозревать, что возникла проблема с кодировкой моих ключей, но я не уверен, что делаю неправильно.
Я использовал web-token/jwt-bundle для генерации ключей, и я попробовал использовать автономное приложение JWT. Я проанализировал результаты с помощью команд пакета key:analyze и keyset:analyze. Кажется, они правы. И я просмотрел здесь связанные вопросы, чтобы узнать, была ли у кого-то подобная проблема. К сожалению, это не помогло.
Я был бы очень признателен за любую информацию по этому поводу. Я определенно врезался в стену. Заранее спасибо!
РЕДАКТИРОВАТЬ: После некоторой отладки выяснилось, что шифрование является обязательным для этого пакета при использовании функции веб-токена, хотя в документации указано, что шифрование является обязательным для этого пакета. в противном случае. Поскольку у меня не было настроено шифрование, все мои запросы с использованием токена отклонялись из-за неопределенного алгоритма.
Шифрование работает, а расшифровка — нет. Он доходит до части процесса расшифровки, а затем терпит неудачу. Итак, я все еще получаю ответ «Неверный токен JWT».
Моя полная конфигурация с включенным шифрованием:
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_PRIVATE_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
api_platform:
enabled: true
check_path: /api/login_check
username_path: username
password_path: password
encoder:
service: lexik_jwt_authentication.encoder.web_token
signature_algorithm: ES512
token_ttl: 3600
allow_no_expiration: false
clock_skew: 0
user_id_claim: username
token_extractors:
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
cookie:
enabled: false
name: BEARER
query_parameter:
enabled: false
name: bearer
split_cookie:
enabled: false
cookies: { }
remove_token_from_body_when_cookies_used: true
set_cookies: { }
access_token_issuance:
enabled: true
signature:
algorithm: ES512
key: # key
encryption:
enabled: true
key_encryption_algorithm: RSA-OAEP-256
content_encryption_algorithm: A256CBC-HS512
key: # key
access_token_verification:
enabled: true
signature:
allowed_algorithms:
- ES512
keyset: # keyset
header_checkers: { }
claim_checkers:
- exp_with_clock_skew
- iat_with_clock_skew
- nbf_with_clock_skew
mandatory_claims: { }
encryption:
enabled: true
continue_on_decryption_failure: false
header_checkers:
- iat_with_clock_skew
- nbf_with_clock_skew
- exp_with_clock_skew
allowed_key_encryption_algorithms:
- RSA-OAEP-256
allowed_content_encryption_algorithms:
- A256CBC-HS512
keyset: # keyset
blocklist_token:
enabled: false
cache: cache.app
Подробнее здесь: https://stackoverflow.com/questions/785 ... token-enco
LexikJWTAuthenticationBundle всегда отклоняет токены JWT при использовании кодировщика веб-токенов. ⇐ Php
Кемеровские программисты php общаются здесь
1716415772
Anonymous
Я пытаюсь настроить LexikJWTAuthenticationBundle для использования в проекте на основе платформы API.
Этот API добавляется в существующий проект, использующий Sulu CMS (2.6.2). и Symfony (6.4.7). Я использую PHP 8.3, у меня установлен и включен OpenSSL.
Я хотел бы иметь возможность использовать функцию веб-токена LexikJWTAuthenticationBundle. Мне удалось заставить работать следующую конфигурацию, основанную на настройках пакета по умолчанию:
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
api_platform:
enabled: true
check_path: /api/login_check
username_path: username
password_path: password
encoder:
service: lexik_jwt_authentication.encoder.lcobucci
signature_algorithm: ES512
token_ttl: 3600
allow_no_expiration: false
clock_skew: 0
user_id_claim: username
token_extractors:
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
cookie:
enabled: false
name: BEARER
query_parameter:
enabled: false
name: bearer
split_cookie:
enabled: false
cookies: { }
remove_token_from_body_when_cookies_used: true
set_cookies: { }
Я следовал документации по настройке функции веб-токена. К сожалению, все портится, как только я перехожу на использование lexik_jwt_authentication.encoder.web_token. Токены JWT всегда недействительны.
Я написал собственную службу поставщика пользователей, чтобы избежать конфликтов с Sulu, и проверил, что она работает с кодировщиком пакета по умолчанию.
Моя конфигурация пакета после перехода на кодировщик веб-токенов:
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_SECRET_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
api_platform:
enabled: true
check_path: /api/login_check
username_path: username
password_path: password
encoder:
service: lexik_jwt_authentication.encoder.web_token
signature_algorithm: ES512
token_ttl: 3600
allow_no_expiration: false
clock_skew: 0
user_id_claim: username
token_extractors:
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
cookie:
enabled: false
name: BEARER
query_parameter:
enabled: false
name: bearer
split_cookie:
enabled: false
cookies: { }
remove_token_from_body_when_cookies_used: true
set_cookies: { }
access_token_issuance:
enabled: true
signature:
algorithm: ES512
key: # key
access_token_verification:
enabled: true
signature:
allowed_algorithms:
- ES512
keyset: # keyset
header_checkers: { }
claim_checkers:
- exp_with_clock_skew
- iat_with_clock_skew
- nbf_with_clock_skew
mandatory_claims: { }
blocklist_token:
enabled: false
cache: cache.app
Как я запрашиваю токен:
curl -X POST http://localhost/api/login_check \
-H "Content-Type: application/json" \
-d '{"username":"someusername","password":"somepassword"}'
Запрос, который я делаю после получения токена:
curl -H "Authorization: Bearer " http://localhost/api/some-endpoint/4
Мне удалось отследить проблему вплоть до этапа загрузки и декодирования токена. Он правильно десериализован и разбит на массив. После этого момента он терпит неудачу. Это заставляет меня подозревать, что возникла проблема с кодировкой моих ключей, но я не уверен, что делаю неправильно.
Я использовал web-token/jwt-bundle для генерации ключей, и я попробовал использовать автономное приложение JWT. Я проанализировал результаты с помощью команд пакета key:analyze и keyset:analyze. Кажется, они правы. И я просмотрел здесь связанные вопросы, чтобы узнать, была ли у кого-то подобная проблема. К сожалению, это не помогло.
Я был бы очень признателен за любую информацию по этому поводу. Я определенно врезался в стену. Заранее спасибо!
[b]РЕДАКТИРОВАТЬ:[/b] После некоторой отладки выяснилось, что шифрование является обязательным для этого пакета при использовании функции веб-токена, хотя в документации указано, что шифрование является обязательным для этого пакета. в противном случае. Поскольку у меня не было настроено шифрование, все мои запросы с использованием токена отклонялись из-за неопределенного алгоритма.
Шифрование работает, а расшифровка — нет. Он доходит до части процесса расшифровки, а затем терпит неудачу. Итак, я все еще получаю ответ «Неверный токен JWT».
Моя полная конфигурация с включенным шифрованием:
lexik_jwt_authentication:
secret_key: '%env(resolve:JWT_PRIVATE_KEY)%'
public_key: '%env(resolve:JWT_PUBLIC_KEY)%'
pass_phrase: '%env(JWT_PASSPHRASE)%'
api_platform:
enabled: true
check_path: /api/login_check
username_path: username
password_path: password
encoder:
service: lexik_jwt_authentication.encoder.web_token
signature_algorithm: ES512
token_ttl: 3600
allow_no_expiration: false
clock_skew: 0
user_id_claim: username
token_extractors:
authorization_header:
enabled: true
prefix: Bearer
name: Authorization
cookie:
enabled: false
name: BEARER
query_parameter:
enabled: false
name: bearer
split_cookie:
enabled: false
cookies: { }
remove_token_from_body_when_cookies_used: true
set_cookies: { }
access_token_issuance:
enabled: true
signature:
algorithm: ES512
key: # key
encryption:
enabled: true
key_encryption_algorithm: RSA-OAEP-256
content_encryption_algorithm: A256CBC-HS512
key: # key
access_token_verification:
enabled: true
signature:
allowed_algorithms:
- ES512
keyset: # keyset
header_checkers: { }
claim_checkers:
- exp_with_clock_skew
- iat_with_clock_skew
- nbf_with_clock_skew
mandatory_claims: { }
encryption:
enabled: true
continue_on_decryption_failure: false
header_checkers:
- iat_with_clock_skew
- nbf_with_clock_skew
- exp_with_clock_skew
allowed_key_encryption_algorithms:
- RSA-OAEP-256
allowed_content_encryption_algorithms:
- A256CBC-HS512
keyset: # keyset
blocklist_token:
enabled: false
cache: cache.app
Подробнее здесь: [url]https://stackoverflow.com/questions/78519632/lexikjwtauthenticationbundle-always-rejects-jwt-tokens-when-using-web-token-enco[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия