Идентификационный сервер WSO2 с внешним GLUU OpenId Connect IDP - метод аутентификации client_secret_basic против client_secret_post - PullRequest
0 голосов
/ 21 сентября 2018

Я тестирую сервер идентификации wso2 с внешним IDP OpenID Connect.Внешний IDP - это GLUU.

В моем тестовом примере у меня есть три компонента:

  • простое веб-приложение, развернутое на локальном хосте: 8099
  • сервер идентификации wso2развернут на локальном хосте: 9443 (с портами по умолчанию)
  • сервер GLUU, развернутый на локальном хосте (с портами по умолчанию)

Поток, который я хочу получить, - это код авторизации OpenId Connect,моему «простому веб-приложению» (настроенному как поставщик услуг в wso2is) требуется код для wso2is, он перенаправляется на страницу входа GLUU, получает код авторизации и обменивает код авторизации для токена доступа.

«простое веб-приложение» зарегистрировано в качестве поставщика услуг в wso2is (с именем «Тест поставщика услуг») с конфигурацией входящей аутентификации типа «OAuth / OpenId Connect Configuration».В этой конфигурации я установил URL-адрес обратного вызова моего «простого веб-приложения», а также секрет клиента и идентификатор клиента, используемые моим простым веб-приложением для получения токена доступа.

Этот «Тест поставщика услуг» враздел «Конфигурация локальной и исходящей аутентификации» настроен на федеративную аутентификацию с «Мой IDP-тест Gluu».

Мой IDP-тест Gluu - это имя провайдера идентификации, которого я добавил в «поставщики услуг» wso2is.Я загрузил сертификат Gluu в «My Gluu Test IDP».

В разделе «Федеративные аутентификаторы» в «My Gluu Test IDP» я настроил «Конфигурацию OAuth / OpenId Connect» с информацией оIDU GLUU (идентификатор клиента, секрет, токен и конечные точки авторизации) и с этим обратным вызовом URL: https://localhost:9443/commonauth

Это было предпосылкой.

Я пробую этот сценарий в первый раз, и этогде я получаю:

  1. Вызов конечной точки авторизации wso2is из моего "простого веб-приложения"
  2. Перенаправление на страницу входа в GLUU
  3. Обратно к моему обратному вызову "простого веб-приложения"URI с ошибкой вместо кода авторизации: {error_description = Требуется аутентификация, состояние = OX86oF, ошибка = login_required, session_state = 70b94648800ea5fa1e2476570ee9678225eaccc4deecea18ca9db022b7e1697c.fF2102 * * * * * * * * **

    TID: [-1234] [] [2018-09-21 10: 33: 10,529] ОШИБКА {org.wso2.carbon.identity.application.authentication.framework.handler.step.impl.DefaultStepHandler} - invalid_client, сбой аутентификации клиента (например, неизвестный клиент, аутентификация клиента не включена или неподдерживаемый метод аутентификации).Сервер авторизации МОЖЕТ вернуть код состояния HTTP 401 (неавторизованный), чтобы указать, какие схемы аутентификации HTTP поддерживаются.Если клиент попытался пройти аутентификацию через поле заголовка запроса авторизации, сервер авторизации ДОЛЖЕН ответить кодом состояния HTTP 401 (неавторизованный) и включить поле заголовка ответа WWW-Authenticate, соответствующее схеме аутентификации, используемой клиентом.org.wso2.carbon.identity.application.authentication.framework.exception.AuthenticationFailedException: invalid_client, сбой аутентификации клиента (например, неизвестный клиент, аутентификация клиента не включена или неподдерживаемый метод аутентификации).Сервер авторизации МОЖЕТ вернуть код состояния HTTP 401 (неавторизованный), чтобы указать, какие схемы аутентификации HTTP поддерживаются.Если клиент попытался пройти аутентификацию через поле заголовка запроса авторизации, сервер авторизации ДОЛЖЕН ответить кодом состояния HTTP 401 (неавторизованный) и включить поле заголовка ответа WWW-Authenticate, соответствующее схеме аутентификации, используемой клиентом.по адресу org.wso2.carbon.identity.application.authenticator.oidc.OpenIDConnectAuthenticator.getOauthResponse (OpenIDConnectAuthenticator.java:585) по адресу org.wso2.carbon.identity.application.authenticator.oidc.OpenIDConnectAuthenticatorID.utheutator ()в org.wso2.carbon.identity.application.authentication.framework.AbstractApplicationAuthenticator.process (AbstractApplicationAuthenticator.java:72) в org.wso2.carbon.identity.application.authentication.framework.handler.step.impl.DefaultStepHandler ()DefaultStepHandler.java:488) в org.wso2.carbon.identity.application.authentication.framework.handler.step.impl.DefaultStepHandler.handleResponse (DefaultStepHandler.java:462) в org.wso2.carbon.identity.application.authentication.Framework.handler.step.impl.DefaultStepHandler.handle (DefaultStepHandler.java:165) в org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle (DefaultStepBasedSej: atHHorg.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.GraphBasedSequenceHandler.handle (GraphBasedSequenceHandler.java:63) в org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle (DefaultAuthenticationRequestHandler.java:131) в org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator.handle (DefaultRequestCoordinator.java:157socar.car). org.application.authentication.framework.servlet.CommonAuthenticationServlet.doPost (CommonAuthenticationServlet.java:53) в org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doGet (CommonAuthenticationServlet). atv.http.HttpServlet.service (HttpServlet.java:624) в javax.servlet.http.HttpServlet.service (HttpServlet.java:731) в org.eclipse.equinox.http.helper.ContextPathServletAdtor (37).в org.eclipse.equinox.http.servlet.internal.ServletRegistration.service (ServletRegistration.java:61) в org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias ​​(ProxyServlet.javag: 12).equinox.http.servlet.internal.ProxyServlet.service (ProxyServlet.java:60) на javax.servlet.http.HttpServlet.service (HttpServlet.java:731) на org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service (DelegationServlet): javaпо адресу org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:303) по адресу org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208) по адресу org.apversoFat.doFilter (WsFilter.java:52) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilter :: atjg:.wso2.carbon.identity.captcha.filter.CaptchaFilter.doFilter (CaptchaFilter.java:76) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) в org.apilF.doFilter (ApplicationFilterChain.java:208) в org.owasp.csrfguard.CsrfGuardFilter.doFilter (CsrfGuardFilter.java:72) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:241) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:20so) или at)..tomcat.ext.filter.CharacterSetFilter..java: 208) по адресу org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter (HttpHeaderSecurityFilter.java:124) по адресу org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilter.apache.1.atache.hain) 24)core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:208)в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:219) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:110) в org.apacheostkevealtataina(StandardHostValve.java:169) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:103) в org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke:80 (Tenant)) в org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke (AuthorizationValve.java:91) в org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke (AuthenticationValve.java:60) в орг.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation (CompositeValve.java:99) в org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve $ 1.invoke (CarbonTomcatValve.java:472. atg).webapp.mgt.TenantLazyLoaderValve.invoke (TenantLazyLoaderValve.java:57) в org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves (TomcatValveContainer.java:47) в org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke (CompositeValve.java:62) в org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invokeDack159) в org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:962) в org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke (CarbonContextCreatorValve.jalapache) atina.core.StandardEngineValve.invoke (StandardEngineValve.java:116) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:445) в org.apache.coyote.http11.AbstractHttp11 Process.Процесс.Процесс) в org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process (AbstractProtocol.java:637) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1775) в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run (NioEndpoint.java:1734) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) в java.lang.Thread.run (Thread.java:748) Причина: OAuthProblemException {error = 'invalid_client', description = 'Ошибка аутентификации клиента (например, неизвестный клиент, аутентификация клиента не включена или неподдерживаемый метод аутентификации).Сервер авторизации МОЖЕТ вернуть код состояния HTTP 401 (неавторизованный), чтобы указать, какие схемы аутентификации HTTP поддерживаются.Если клиент попытался пройти аутентификацию через поле заголовка запроса авторизации, сервер авторизации ДОЛЖЕН ответить кодом состояния HTTP 401 (неавторизованный) и включить поле заголовка ответа WWW-Authenticate, соответствующее схеме аутентификации, используемой клиентом. ', Uri ='null', состояние = 'null', область действия = 'null', redirectUri = 'null', responseStatus = 0, параметры = {}} в org.apache.oltu.oauth2.common.exception.OAuthProblemException.error (OAuthProblemException.Java: 59) в org.apache.oltu.oauth2.client.validator.OAuthClientValidator.validateErrorResponse (OAuthClientValidator.java:63) в org.apache.oltu.oauth2.client.validator.OAuthClientValididalvalid_valid.valid.valid.valid.validalvalid.valid.valid.validalvalid.valid.validalvalid.valid.validal.alidator.alidator.alidator.alidator.alidator.alid.в org.apache.oltu.oauth2.client.response.OAuthClientResponse.validate (OAuthClientResponse.java:64) в org.apache.oltu.oauth2.client.response.OAuthClientResponse.init (OAuthClientResponse.jap) at..oltu.oauth2.client.response.OAuthAccessTokenResponse.init (OAuthAccessTokenResponse.java:52) в илиg.apache.oltu.oauth2.client.response.OAuthClientResponseFactory.createCustomResponse (OAuthClientResponseFactory.java:60) в org.apache.oltu.oauth2.client.URLConnectionClient.execute (URLConne): URLConneв org.apache.oltu.oauth2.client.OAuthClient.accessToken (OAuthClient.java:65) в org.apache.oltu.oauth2.client.OAuthClient.accessToken (OAuthClient.java:55) в org.apache.oltu.uth2.client.OAuthClient.accessToken (OAuthClient.java:71) в org.wso2.carbon.identity.application.authenticator.oidc.OpenIDConnectAuthenticator.getOauthResponse (OpenIDConnectAuthenticator.java:580) ... 61 больше

    1041 * После этой ошибки в пользовательском интерфейсе администрирования GLUU я изменил «метод аутентификации для конечной точки токена» с client_secret_basic на client_secret_post и снова попытался выполнить тест, и все отлично работает:
    1. Вызов wso2isконечная точка авторизации из моего "простого веб-приложения".
    2. Перенаправление на страницу входа в GLUU
    3. Перенаправление на страницу авторизации WSO2IS (тестовое приложение OpenID User Claims Service Provider запрашивает доступ к информации вашего профиля ...)
    4. Вернуться к моему обратному вызову "простого веб-приложения" с кодом авторизации: {code = 7269a75f-8702-3843-a553-465b69546a27, state = 6yFD89, session_state = 61d504abd9fe3cda28934f4aa394b156d6792071669f3020d4b79373ba5a1236.-QhpECv8pyocY1T2uu-kBQ}
    5. Мой * простой
    10 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}} город не совсем понимает;наконец мой вопрос:

    В этом тестовом сценарии я могу изменить конфигурации внешнего IDP, но в реальном сценарии я не мог изменить этот параметр на внешнем IDP.Я не смог найти в конфигурации WSO2IS Identity Provider как выбрать из client_secret_basic, client_secret_post, client_secret_jwt, private_key_jwt, none.

    Без изменения параметра IDU GLUU с client_secret_basic на client_secret_post, что я должен изменить в конфигурации wso2этот сценарий работы?

1 Ответ

0 голосов
/ 06 октября 2018

Начиная с версии IS 5.6.0, у вас есть возможность настроить механизм аутентификации клиента.В 'OAuth2 / OpenID Connect Configuration' настроек IdP вы можете использовать свойство ' Включить базовую аутентификацию HTTP для аутентификации клиента ', чтобы удовлетворить ваши требования.

...