配置Apache NiFi对接WSO2 IS实现单点登录(SSO)
配置Apache NiFi与WSO2 Identity Server实现单点登录(SSO)
前置准备
- 确保NiFi(推荐1.15及以上版本)和WSO2 IS(推荐5.11及以上或最新版)正常运行,且两者网络能互通
- 记好NiFi的访问地址(例如
https://nifi-host:8443/nifi)和WSO2 IS的控制台地址(例如https://wso2-is-host:9443/carbon)
WSO2 Identity Server 端配置
1. 创建服务提供者
- 登录WSO2 IS管理控制台,找到主菜单 > Identity > Service Providers > Add
- 输入服务提供者名称(比如
NiFi-SSO),点击Register - 进入Inbound Authentication Configuration > SAML2 Web SSO Configuration,点击Configure
- 填写SAML2核心配置:
- Issuer:填NiFi的实体ID,建议设为
https://nifi-host:8443/nifi - Assertion Consumer URL:填NiFi的SAML回调地址
https://nifi-host:8443/nifi-api/access/saml/callback,记得勾选Default - NameID Format:选
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress(也可根据需求选persistent等) - Response Signing Algorithm:选
http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 - 勾选Enable Response Signing、Enable Assertion Signing,如果需要单点登出就再勾选Enable Single Logout
- 点击Register完成配置
- Issuer:填NiFi的实体ID,建议设为
- 返回服务提供者列表,点击刚创建的
NiFi-SSO,进入Claim Configuration > Claim Mapping- 配置用户属性映射:把WSO2 IS的
http://wso2.org/claims/emailaddress映射到NiFi的email,http://wso2.org/claims/role映射到groups(NiFi靠groups分配权限) - 点击Update保存
- 配置用户属性映射:把WSO2 IS的
2. 导出WSO2 IS的SAML元数据
在服务提供者列表里找到NiFi-SSO,点击Metadata Export,下载XML格式的元数据文件,存为wso2-is-saml-metadata.xml备用
Apache NiFi 端配置
1. 修改nifi.properties配置文件
找到NiFi安装目录下的conf/nifi.properties,修改以下参数:
# 切换认证方式为SSO,禁用原有密码认证 nifi.security.user.authentication=single-sign-on # 指定WSO2 IS的元数据文件路径 nifi.security.user.saml.idp.metadata.file=/绝对路径/wso2-is-saml-metadata.xml # 填写NiFi的实体ID,要和WSO2 IS里的Issuer一致 nifi.security.user.saml.entity.id=https://nifi-host:8443/nifi # SAML回调地址,和WSO2 IS里的Assertion Consumer URL一致 nifi.security.user.saml.callback.url=https://nifi-host:8443/nifi-api/access/saml/callback # 用邮箱作为用户标识,和WSO2 IS里的NameID Format对应 nifi.security.user.saml.name.identifier=emailAddress # 用WSO2 IS的角色作为NiFi的用户组 nifi.security.user.saml.group.attribute=groups
如果WSO2 IS启用了断言签名,还要配置NiFi信任WSO2 IS的证书:
nifi.security.user.saml.idp.signature.algorithm=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 # 指定NiFi的信任库路径 nifi.security.user.saml.truststore=/path/to/nifi-truststore.jks nifi.security.user.saml.truststore.type=JKS nifi.security.user.saml.truststore.password=你的信任库密码
注:把WSO2 IS的公钥导入NiFi信任库的命令示例:
keytool -importcert -alias wso2is -file wso2is-public.crt -keystore nifi-truststore.jks -storepass 你的密码
2. 配置NiFi权限映射
- 访问NiFi地址,会自动跳转到WSO2 IS登录页,用WSO2里的用户账号登录进入NiFi
- 打开全局菜单 > Users and Access Policies
- 点击Groups,创建和WSO2 IS中用户角色同名的组(比如
nifi-admin) - 给这些组分配对应权限(比如管理员组要开访问UI、修改流程等权限)
- 确保WSO2用户的角色名和NiFi的组名完全一致,这样用户登录后会自动获得对应权限
3. 重启NiFi服务
重启NiFi让配置生效
验证SSO效果
- 访问NiFi UI,会自动跳转到WSO2 IS登录页面
- 用WSO2 IS的用户账号登录,成功进入NiFi且拥有对应权限
- 如果配置了单点登出,从NiFi登出后会跳转到WSO2 IS的登出页面,完成全局登出
内容的提问来源于stack exchange,提问作者Devaddy
相关产品推荐
相关产品推荐

