Последние несколько дней я изо всех сил пытался заставить AM6 (Forgerock Access Management) работать с той же конфигурацией, что и AM5. Я пытаюсь проверить сеанс после того, как пользователь выполнил поток кода авторизации OpenID Connect.
Моя настройка:
Я развернул экземпляр AM
Сконфигурированный OpenID Connect из общих задач.
Добавлен клиент OAuth2, из Приложений -> OAuth 2.0. Настройте все конфигурации: перенаправьте Uris, время жизни областей и т. Д. И установите «Метод аутентификации конечной точки токена» на client_secret_post
(ДОПОЛНИТЕЛЬНО) Добавлено подразумеваемое согласие для клиента OAuth 2.0, а затем установите Службы -> Поставщик Oauth2 -> Согласие -> Allow clients to skip consent = true
Использование моего токена:
После перенаправления пользователя на экран входа в систему (и получения кода) я выполняю POST для конечной точки токена (/oauth2/access_token
) с помощью form_params
(
[client_id] => my_client
[client_secret] => my_client_pass
[code] => a5867a21-4d5a-4285-ba07-dcbe46d53bc6
[redirect_uri] => http://localhost:3000/auth/callback
[grant_type] => authorization_code
)
Конечная точка redirect_uri получает access_token
и id_token
(
[access_token] => e78569fb-e162-4e4f-ab5e-79ebeaf2ba94
[scope] => openid offline_access profile email
[id_token] => eyJ0eXAiOiJKV1QiLCJraWQiOiJiL.......
[token_type] => Bearer
[expires_in] => 35999
)
(ЗДЕСЬ ПРОБЛЕМА) Затем я проверяю, действителен ли сеанс пользователя с данным id_token (он вышел из системы или нет)
Я делаю POST к конечной точке сеансов (/json/sessions
) с
(
'headers' => [
'Accept-API-Version' => 'resource=1.2'
],
'query' => [
'_action' => 'validate',
'tokenId' => eyJ0eXAiOiJKV1QiLCJraWQiOiJiL082T.......
],
)
При попытке против AM5 я получаю
{"valid":true,"uid":"my-user-here","realm":"/"}
При попытке использовать AM6.0.0.4 я всегда получаю:
{"valid":false}
Я что-то упускаю, что мешает сгенерированному идентификатору openid id_token быть доступным в конечной точке сеансов?