Какова цель параметра --oidc-client-id при настройке Kubernetes для использования OpenID Connect?
В документации Kubernetes, относящейся к OpenID Connect, упоминается, что в процессе настройки вам необходимо предоставить некоторые параметры серверу API:
--oidc-client-id: A client id that all tokens must be issued for.
Нет другого объяснения о том, как это сопоставится, скажем, с чем-то, возвращенным OpenID Connect-совместимым провайдером идентификации Google.
Я не знаю, для чего будет использоваться это значение параметра. Будет ли он совпадать с чем-то в декодированном токене JWT?
Похоже, id_token
возвращенный провайдером идентификации Google может содержать что-то, aud
поле (aud
очевидно, сокращение от "аудитории"). Это то, что --oidc-client-id
должен совпадать? Я далеко?
1 ответ
Это можно объяснить из документации kubernetes по токенам id.
Как видите, провайдер идентификации - это отдельная система. Например, это может быть MS Azure AD или Google, как вы показали.
Когда вы регистрируетесь для провайдера идентификации, вы получаете взамен важные вещи. client id
является одним из таких важных параметров. если вам известно о потоке openid connect, вам необходимо предоставить client id
когда вы будете следовать за потоком. Если поток завершен, вы вернете id token
, id token
имеет право требовать, aud
для какой аудитории был выпущен токен.
Когда вы подтверждаете id token
Вы ДОЛЖНЫ подтвердить, что находитесь в списке аудитории. Больше можно найти в спецификации.
Цитирование из спецификации,
Клиент ДОЛЖЕН подтвердить, что Заявка aud (аудитории) содержит значение client_id, зарегистрированное у Эмитента, указанного в Заявке iss (эмитента) в качестве аудитории.
Теперь kubernetes использует токены на предъявителя. Здесь используются токены id tokens
, Чтобы проверить токен, он должен знать конкретно аудиторию. Это позволяет серверу API проверять токен, выданный для конкретного клиента, который сделал вызов. Таким образом санкционируя призыв к успеху.