[英]WSO2 API Manager and Kerberos
我已經設置了新的WSO2 API管理器服務器(版本2.6.0),並嘗試將服務器配置為支持Kerberos,但是我在理解整個過程方面存在問題。 我們的客戶端是在Windows計算機(Chrome或IE)上運行的Angular應用程序。 在文檔中,我找到了以下句子:應用程序應通過調用以下命令來請求新的訪問令牌:
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令牌”應該從哪里來,我該如何測試呢?
我的預期結果是,將調用該服務,對用戶進行身份驗證,並將用戶信息傳遞給后端服務,但此刻我無法找到如何找到此kerberos炸彈的解決方案。
創建API時,將授權標頭定義為X-APIM-Auth 。 在下面構建自定義處理程序代碼,然后將生成的jar復制到路徑/ repository / components / dropins中的以下目錄。
https://github.com/AndreaNim/kerberos-delegation-handler
您可以將此自定義處理程序添加到API,並將以下邏輯添加到/repository/resources/api_templates/velocity_template.xml文件 。
如下所示,將IIS后端服務的SPN配置為處理程序中的targetSPN屬性,
<handler class="org.wso2.apim.kerberos.handler.CustomKerberosDelegationHandler">
<property name="targetSPN" value="<Server Principal Name>"/>
</handler>
在/ repository / conf / security /文件夾中創建一個名為“ kerberos”的目錄,並添加以下文件,
樣本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
嘗試通過密碼授予類型獲取訪問令牌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.