WSO2 APIM — проблема с дополнительным утверждением с использованием подхода с учетными данными клиента

#wso2 #wso2-am #apim

#wso2 #wso2-api-manager #apim

Вопрос:

Я пытаюсь сгенерировать JWT из конечной точки токена WSO2, используя подход с паролем и учетными данными клиента, но не нахожу разницы в значении дополнительного утверждения. Он всегда указывает только на идентификатор пользователя, разве у него не должен быть идентификатор приложения / идентификатор клиента в дополнительном утверждении для JWT, сгенерированном с использованием подхода с учетными данными клиента?

пример:

  1. Токен получен с использованием предоставления пароля:

Запрос:

СООБЩЕНИЕ https://localhost:8243/token HTTP/1.1

Тип содержимого: application / x-www-form-urlencoded
Авторизация: Базовая UnNOYWY5ams2MERCM2tXQ292ZGZEZnRTWklvYToxU1o0alg1bW5YV2lBT3BkYjRReFhmS09VN1lh
Хост: localhost: 8243
Длина содержимого: 53

grant_type=passwordamp;username=api3devamp;password= api3dev

JWT в ответ {«typ»: «JWT», «alg»:»RS256″, «x5t»: «ntdmzjm4zdk3njy0yzc5mmzmodgwmte3mwywnde5mwrl zdg4nzc4za==»} {«aud»:»http://org.wso2.apimgt/gateway»,«sub»:»api3dev@carbon.super»,»application»:{«owner»:»api2dev»,»tierQuotaType»:»requestCount»,»tier»:»Unlimited»,»name»:»demoapp_oriKeymgr»,»id»:68,»uuid»:null},»scope»:»default»,»iss»:»https://localhost:9443/oauth2/token»,»tierInfo»:{«Unlimited»:{«tierQuotaType»:»requestCount»,»stopOnQuotaReach»:true,»spikeArrestLimit»:0,»spikeArrestUnit»:null}},»keytype»:»PRODUCTION»,»subscribedAPIs»:[{«subscriberTenantDomain»:»carbon.super»,»name»:»PizzaShackAPI»,»context»:»/pizzashack/1.0.0″,»publisher»:»admin»,»version»:»1.0.0″,»subscriptionTier»:»Unlimited»}],»consumerKey»:»RsNaf9jk60DB3kWCovdfDftSZIoa»,»exp»:1600502664,»iat»:1600499064,»jti»: «426d64a9-932b-4f0c-b396-202fd03dd960»}

  1. Токен, полученный с использованием учетных данных клиента:

Запрос:

СООБЩЕНИЕ https://localhost:8243/token HTTP/1.1
Тип содержимого: application/x-www-form-urlencoded
Авторизация: Базовая UnNOYWY5ams2MERCM2tXQ292ZGZEZnRTWklvYToxU1o0alg1bW5YV2lBT3BkYjRReFhmS09VN1lh
Хост: localhost:8243
Длина содержимого: 29

grant_type=client_credentials

JWT в ответ {«typ»: «JWT», «alg»:»RS256″, «x5t»: «ntdmzjm4zdk3njy0yzc5mmzmodgwmte3mwywnde5mwrl zdg4nzc4za==»} {«aud»:»http://org.wso2.apimgt/gateway»,«sub»:»api2dev@carbon.super»,»application»:{«owner»:»api2dev»,»tierQuotaType»:»requestCount»,»tier»:»Unlimited»,»name»:»demoapp_oriKeymgr»,»id»:68,»uuid»:null},»scope»:» am_application_scope по умолчанию», «iss»:»https://localhost:9443/oauth2/token «,»tierInfo»:{«Unlimited»:{«tierQuotaType»:»requestCount»,»stopOnQuotaReach»:true,»spikeArrestLimit»:0,»spikeArrestUnit»:null}},»keytype»:»PRODUCTION»,»subscribedAPIs»:[{«subscriberTenantDomain»:»carbon.super»,»name»:»PizzaShackAPI»,»context»:»/pizzashack/1.0.0″,»publisher»:»admin»,»version»:»1.0.0″,»subscriptionTier»:»Unlimited»}],»consumerKey»:»RsNaf9jk60DB3kWCovdfDftSZIoa»,»exp»:1600502788,»iat»:1600499188, «jti»: «8091497e-9978-4541- 99b9-efca50b16868»}

В приведенном выше примере вы можете видеть, что вложенное утверждение всегда имеет только идентификатор пользователя.

Комментарии:

1. какую версию API-M вы используете? Да, в идеале значением дополнительного утверждения для токенов, полученных с использованием учетных данных клиента, должен быть идентификатор клиента. В API-M 3.2 используется JWTTokenIssuer WSO2 IS, следовательно, это должно быть исправлено в github.com/wso2-extensions/identity-inbound-auth-oauth . Пожалуйста, создайте проблему с git.

Ответ №1:

В WSO2 API Manager при создании access_token с помощью client_credentials дополнительное утверждение заполняется владельцем приложения (поставщиком услуг). Я не уверен, что в учетных данных клиента подзапрос должен быть заполнен client_id приложения Oauth2, поскольку учетные данные клиента — это процесс аутентификации на компьютере без учетных данных пользователя, поэтому подзапрос (субъект) должен быть пользователем, в данном случае владельцем. Для меня это правильное значение.