[英]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.