Невозможно получить общий клиент OAuth2, работающий с сервером CAS с использованием pac4j

Я работаю над интеграцией входа в Instagram с использованием делегированной аутентификации на сервере CAS. Я настроил все необходимые свойства в файле cas.properties, а также создал для него файл JSON регистрации службы. Когда я вхожу в аккаунт Instagram, меня перенаправляют обратно на страницу входа в CAS, и ничего не происходит.

Я попытался поэкспериментировать с файлом JSON реестра служб, а также с различными свойствами в cas.properties

Файл cas.properties содержит следующее

cas.authn.pac4j.oauth2[0].id={client_id}
cas.authn.pac4j.oauth2[0].secret={client_secret}
cas.authn.pac4j.oauth2[0].authUrl=https://api.instagram.com/oauth/authorize?client_id={client_id}&response_type=code&client_name=instagram
cas.authn.pac4j.oauth2[0].tokenUrl=https://api.instagram.com/oauth/access_token?grant_type=client_credentials&client_id={client_id}&client_secret={client_secret}&client_name=instagram
cas.authn.pac4j.oauth2[0].profileUrl=https://api.instagram.com/v1
cas.authn.pac4j.oauth2[0].clientName=instagram
cas.authn.pac4j.oauth2[0].profileVerb=GET
cas.authn.pac4j.oauth2[0].profilePath=/users/self/

cas.serviceRegistry.watcherEnabled=true
cas.serviceRegistry.schedule.repeatInterval=10000
cas.serviceRegistry.schedule.startDelay=15000

cas.serviceRegistry.initFromJson=true

cas.serviceRegistry.json.location=file:/etc/cas/services/

Файл JSON службы выглядит следующим образом:

{
  "@class" : "org.jasig.cas.services.RegexRegisteredService",
  "serviceId" : "^https://.*.{domain}.com.*",
  "name" : "eyerne",
  "id" : 10002,
  "description" : "This service definition authorizes the eyerne URL.",
  "accessStrategy" : {
    "@class" : "org.jasig.cas.services.DefaultRegisteredServiceAccessStrategy",
    "enabled" : true,
    "ssoEnabled" : true
  },
  "bypassApprovalPrompt": true,
  "generateRefreshToken": true,
  "proxyPolicy" : {
    "@class" : "org.apereo.cas.services.RegexMatchingRegisteredServiceProxyPolicy",
    "pattern" : "^https?://.*"
  },
  "supportedGrantTypes": [ "java.util.HashSet", [ "authorization_code", "client_credential"] ],
  "supportedResponseTypes": [ "java.util.HashSet", [ "code", "token" ] ],
  "attributeReleasePolicy" : {
    "@class" : "org.apereo.cas.services.ReturnAllAttributeReleasePolicy"
  }
}

Я не могу достичь точки, когда CAS может получить токен доступа и получить информацию о пользователе, используя URL-адрес профиля.

Вместо этого я получаю следующие ошибки:

DEBUG [org.apereo.cas.support.oauth.services.OAuth20AuthenticationServiceSelectionStrategy] - <Authentication request is not identified as an OAuth request>

=============================================================
WHO: audit:unknown
WHAT: [event=success,timestamp=Mon Aug 05 16:27:34 IST 2019,source=RankedAuthenticationProviderWebflowEventResolver]
ACTION: AUTHENTICATION_EVENT_TRIGGERED
APPLICATION: CAS
WHEN: Mon Aug 05 16:27:34 IST 2019
CLIENT IP ADDRESS: 0:0:0:0:0:0:0:1
SERVER IP ADDRESS: 0:0:0:0:0:0:0:1
=============================================================

Если я попытаюсь повторить попытку и войти в CAS с помощью Instagram, я получу другую ошибку:

CAS is unable to process this request: "500:Internal Server Error"

org.springframework.webflow.execution.ActionExecutionException: Exception thrown executing org.apereo.cas.web.flow.DelegatedClientAuthenticationAction@33ec9d9 in state 'clientAction' of flow 'login' -- action execution attributes were 'map[[empty]]'

Что мне нужно сделать или изменить, чтобы успешно войти на сервер CAS с помощью Instagram?

Обновление 16/16/2019

Я смог заставить PAC4J работать на Instagram, исправив один из его модулей. Мне пришлось вручную добавить токен доступа к окончательному URL вызываемого профиля, а также изменить метод аутентификации с basicAuth на requestBody.

Однако теперь, когда Instagram перенаправляет меня обратно на сервер CAS, после входа я должен быть перенаправлен на URL службы. Вместо этого я перенаправлен на страницу успешной регистрации CAS со следующим сообщением:

Вы, tridhya123, успешно вошли в систему Центральной службы аутентификации. Однако вы видите эту страницу, потому что CAS не знает о вашей цели и о том, как туда добраться. Еще раз проверьте запрос аутентификации и убедитесь, что указана целевая служба / приложение, авторизованное и зарегистрированное в CAS.

Ниже приведен файл журнала отладки, показывающий поток входа из Instagram в CAS:

https://file.io/ztteR3

0 ответов

Другие вопросы по тегам