WSO2 API Manager и Kerberos - PullRequest
       12

WSO2 API Manager и Kerberos

0 голосов
/ 16 июня 2019

Я установил новый сервер WSO2 API Manager (версия 2.6.0) и пытаюсь настроить сервер для поддержки Kerberos, но у меня проблема с пониманием всего процесса.Наш клиент - это приложение Angular, работающее на машинах с Windows (Chrome или IE).В документации я нашел предложение: «Приложение должно запросить новый токен доступа, позвонив по номеру
curl -v -X POST -H "Authorization: Basic <base64 encoded client id:client secret value>" -k -d "grant_type=kerberos&kerberos_realm=<kerberos realm>&kerberos_token=**<kerberos token>**" -H "Content-Type:application/x-www-form-urlencoded" https://localhost:9443/oauth2/token

, но откуда взялся этот« токен Kerberos »и как его проверить??

  • Я установил и настроил сервер, соответствующий документации.
  • У меня есть субъект службы в AD и настроен поставщик удостоверений в WSO2 API.
  • Я настроил пример API, который работает с обычным OAuth2
  • Я активировал Kerberos в приложении (WSO2 API Store)

Мой ожидаемый результат будет, служба называется,пользователь проходит проверку подлинности, и информация о нем передается в бэкэнд-сервис, но в данный момент я укладываюсь в стек и не могу найти решение, как найти этот токен kerberos.

1 Ответ

2 голосов
/ 16 июня 2019

определяет авторизованный заголовок как X-APIM-Auth при создании API. Создайте приведенный ниже код пользовательского обработчика и скопируйте полученный jar-файл в следующий каталог по пути / repository / components / dropins .

https://github.com/AndreaNim/kerberos-delegation-handler

Вы можете добавить этот пользовательский обработчик в API и добавить приведенную ниже логику в файл / repository / resources / api_templates / speed_template.xml .

настроить имя участника-службы внутренней службы IIS в качестве свойства targetSPN в обработчике, как показано ниже,

<handler class="org.wso2.apim.kerberos.handler.CustomKerberosDelegationHandler">
        <property name="targetSPN" value="<Server Principal Name>"/>
</handler>

Создайте каталог с именем «kerberos» внутри папки / repository / conf / security / и добавьте следующие файлы,

  • krb5.conf
  • login.conf
  • Keytab

Пример файла krb5.conf:

[libdefaults]
        default_realm = EXAMPLE.COM

[realms]
        EXAMPLE.COM = {
        kdc = kdc1.example.com
                  }

[domain_realm]
        .example.com = EXAMPLE.COM

Пример файла login.conf:

KrbLogin {
 com.sun.security.auth.module.Krb5LoginModule required
 useTicketCache=false
 refreshKrb5Config=true
 doNotPrompt=true
 useKeyTab=true
 debug=true
 storeKey=true
 principal="< principal >"
 keyTab="< keytab_path >";
};

Команда для создания таблицы ключей

ktpass /out <keytab>  /princ HTTP/<FQDN>@<DOMAIN NAME> /mapuser <User Name of the AD account>/pass <User Password of the Authentication Service AD account> /crypto All /ptype KRB5_NT_PRINCIPAL

попытаться получить токен доступа по типу предоставления пароля.

...