Как я могу отладить ошибку «KidNotFound» при реализации единого входа GitLab с Azure AD в качестве IdP?
Я пытаюсь интегрировать наш самоуправляемый экземпляр GitLab 15.9.3-ee с нашим Azure AD. Используя Azure AD в качестве IdP для единого входа в GitLab, я использовал документацию здесь:
https://docs.gitlab.com/ee/administration/auth/oidc.html
https://docs.gitlab.com/ee/integration/omniauth.html
https://docs.gitlab.com/ee/integration/azure.html
чтобы настроить OmniAuth для использования OpenIdConnect для доступа к нашемуlogin.microsoftonline.com
Конечная точка версии 2 для нашей разработки Azure Tennant. Конфигурация, необходимая вomniauth_providers []
немного отличается между документами, это то, что я сейчас использую:
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ["azure_activedirectory_v2"]
gitlab_rails['omniauth_auto_link_ldap_user'] = false
gitlab_rails['omniauth_block_auto_created_users'] = true
gitlab_rails['omniauth_auto_link_user'] = ["azure_activedirectory_v2"]
gitlab_rails['omniauth_providers'] = [
{
name: "azure_activedirectory_v2",
args: {
name: "azure_activedirectory_v2",
strategy_class: "OmniAuth::Strategies::OpenIDConnect",
scope: ["openid", "profile", "email"],
response_type: "code",
issuer: "https://login.microsoftonline.com/6b72c6a7-3624-4c78-82ea-8901960e56c3/v2.0",
client_auth_method: "query",
discovery: true,
uid_field: "preferred_username",
send_scope_to_token_endpoint: "false",
pkce: true,
client_options: {
identifier: "386481e3-7a0e-4ba3-b85c-d1baa1716276",
secret: "nev8Q~bGETvJNqdm58__xGG.mZjmcfIsS69hZanZ",
redirect_uri: "https://gitlab.dev.scalable.com/users/auth/azure_activedirectory_v2/callback"
}
}
}
]
Я вижу кнопку входа в Azure на странице входа и кнопку Azure AD v2 для подключения к Azure AD:GitLab-> User Dropdown-> Edit Profile-> Account-> Service sign-in
. Когда я нажимаю кнопку «Подключиться», в журналах Azure аутентификация записывается как успешная, но в файле application.log GitLab я получаю сообщениеAuthentication failure! JSON::JWK::Set::KidNotFound
ошибка.
2023-05-24T14:40:28.421Z: (openid_connect) Request phase initiated.
2023-05-24T14:40:29.113Z: (openid_connect) Callback phase initiated.
2023-05-24T14:40:29.627Z: (openid_connect) Authentication failure! JSON::JWK::Set::KidNotFound: JSON::JWK::Set::KidNotFound, JSON::JWK::Set::KidNotFound
Это происходит независимо от того, использую ли яazure_activedirectory_v2
илиopenid_connect
обратные вызовы. Я попробовал несколько разных значений дляuid_field
:, такой как:oid, sub, name, email, mail, preferred_username, user.name
... и еще несколько других. Поэтому мне было интересно, есть ли какая-нибудь более свежая документация, описывающая настройку Azure AD с нуля, или лучший источник информации для отладки?
Или я просто делаю что-то не так?