OpenID&OAuth发展历史
OIDC(OpenID Connect)与 Oauth2.0的对比
OIDC 的全称是 OpenID Connect,是一套基于 OAuth 2.0 的 的行业标准协议。Oauth2.0只解决了授权问题,未解决认证问题。例如用户A在应用C登录,跳转微博登录认证后,应用C拿到了access_token,此时只解决了授权问题,应用C还需拿access_token去调用微博API接口,获取用户A的基本信息。
若使用OIDC协议,在跳转微博登录认证后,不仅返回access_token,还返回id_tokens(JWT格式),应用C对id_tokens解密后,可以获得用户A信息,减少请求获取用户信息的操作。
OIDC协议另一个优势是相比Oauth2.0,服务端提供了说明文档。基于Oauth2.0协议时,不同认证服务如微信、微博等,相关的url地址不同,需要在客户端中配置。OIDC协议时候,认证服务会提供OIDC-Discovery-URL接口,该接口会返回Oauth2.0协议的相关接口地址,id_tokens解密算法,公钥等信息,减少客户端的配置。
NIFI配置单点登录为OIDC
修改OIDC登录配置
\nifi-1.16.0\conf\nifi.properties
nifi.security.user.oidc.discovery.url=http://127.0.0.1:8086/info
nifi.security.user.oidc.connect.timeout=60 secs
nifi.security.user.oidc.read.timeout=60 secs
nifi.security.user.oidc.client.id=my_client
nifi.security.user.oidc.client.secret=******
nifi.security.user.oidc.preferred.jwsalgorithm=RS256
nifi.security.user.oidc.additional.scopes=
nifi.security.user.oidc.claim.identifying.user=my_username
nifi.security.user.oidc.fallback.claims.identifying.user=email
nifi.security.user.oidc.truststore.strategy=JDK
//从报错信息与源码可知,login-identity-provider需设为空
nifi.security.user.login.identity.provider=
修改鉴权配置
修改鉴权authorizer
\nifi-1.16.0\conf\nifi.properties
nifi.security.user.authorizer=managed-authorizer
配置初始化的用户
需先设置初始化时的管理员账号,修改
\nifi-1.16.0\conf\authorizers.xml
完成配置,nifi启动时,会往user.xml与authorizations.xml分别写入用户信息与授予的权限。
设置初始化一个admin用户
<userGroupProvider>
…………
<property name="Initial User Identity 1">admin</property>
…………
</userGroupProvider>
设置管理员账号id为admin
<accessPolicyProvider>
………………
<property name="Initial Admin Identity">admin</property>
………………
</accessPolicyProvider>
启动NIFI
- 初次启动可能需要五分钟
\nifi-1.16.0\bin\run-nifi.bat
- 查看日志文件
\nifi-1.16.0\logs\nifi-app
- 访问
https://127.0.0.1:8443/nifi/