SAML provider для VCloudDirector
Содержание
SAML provider для VCloudDirector#
Инструкция по первичной настройке#
Регенерация сертификатов VCloudDirector#
1. На стороне VCD#
Срок действия сертификатов VDC видно в :
VCD: SAML Configuration#
Попытка cгенерировать новые самостоятельно () успехом не увенчалась (ошибок нет, но после сохранения вижу старый серт). ТП выполнила перегенерацию самостоятельно и ответила:
Описанное вами поведение портала вызвано известным вендору багом. С помощью workaround срок действия сертификата был продлён.
По ссылке со скриншота выше (Metadata
https://vcd.sbercloud.ru/cloud/org/SiteFactory/saml/metadata/alias/vcd)
загружаем spring_saml_metadata.xml — из него возьмём новые сертификаты VCD
для импорта в Keycloak.
2. Извлекаем сертификаты#
Нам требуются два сертификата: для подписи и для шифрования. Ниже пример файла
spring_saml_metadata.xml, отметил, откуда копировать сертификаты.
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="vcloud" entityID="vcloud">
<md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
--- тут сертификат подписи в формате PEM ---
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>
--- тут сертификат шифрования в формате PEM ---
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://vcd.sbercloud.ru/login/org/sitefactory/saml/SingleLogout/alias/vcd"/>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://vcd.sbercloud.ru/login/org/sitefactory/saml/SingleLogout/alias/vcd"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://vcd.sbercloud.ru/login/org/sitefactory/saml/SSO/alias/vcd" index="0" isDefault="true"/>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser" Location="https://vcd.sbercloud.ru/login/org/sitefactory/saml/HoKSSO/alias/vcd" hoksso:ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" index="1" xmlns:hoksso="urn:oasis:names:tc:SAML:2.0:profiles:holder-of-key:SSO:browser"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
Копируем сертификаты в файлы, например, vcloud_signing_cert.pem и
vcloud_encryption_cert.pem, добавив строки для идентификации:
-----BEGIN CERTIFICATE-----
< вставляем содержимое сертификата сюда >
-----END CERTIFICATE-----
3. На стороне Keycloak#
Идём на
https://auth.appworks.ru/auth/admin/master/console/#/realms/master
(на 2022-09-15 нужно разрешить доступ на уровне nginx на c04-dmz-nginx).
Открываем Realm Master, слева в меню — Клиенты, в списке выбираем vcloud, переходим на вкладку Ключи.
Импортируем полученные в пункте 2 сертификаты в Ключ подписи и Ключ шифрования.
Проверяем, что авторизация в VCD работает.