|
1.第三方认证
SMARTS实例提供有默认的身份验证程序,用户名和密码信息保存在SMARTS数据库中,SMARTS通过检索数据库来验证用户是否可以登录到一个工作区。
SMARTS可以配置第三方身份验证程序(如Active Directory、Microsoft帐户、Google帐户等)。当使用第三方身份验证程序时,用户将通过第三方身份验证提供的登陆界面,进行用户登陆验证。如果通过身份验证,他们可以继续选择他们拥有账号的工作区,然后登陆到SMARTS相应的工作区中。
想使用第三方身份验证程序,需要先创建一个身份验证设置。
添加身份验证设置
注意:只有你拥有TenantAdminRole角色,并且你的SMARTS实例是单租户时,才允许添加第三方身份验证设置。
添加一个身份验证设置:
点击左侧【管理】菜单,然后在右侧选择【认证设置】
点击【新增认证设置】按钮
添加相应信息,然后添加【新增】按钮
配置项说明
名称: 自定义一个认证名称
关于【依赖方】选项,依赖方有多个选项,其它选项说明:
Microsoft AD LDS:使用Microsoft AD身份认证,支持WS-Federation和LDAP协议
Microsoft Azure Active Directory:使用Azure和Azure AD身份认证,支持WS-Federation和OAuth2协议。
Microsoft Account:使用Microsoft Account身份认证,支持OAuth2协议
Google Account: 使用Google Account身份认证,支持OpenID Connect协议
Accela: 使用Accela身份认证,支持OAuth2协议
Generic:只是一个通用提供者,支持OAuth2协议
关于【协议】选项,有如下几个:
LDAP:适用于依赖方为Microsoft AD LDS.
WS-Federation:适用于依赖方为Microsoft AD LDS或者Microsoft Azure Active Directory
OAuth2: 适用于依赖方为 Microsoft Azure Active Directory, Microsoft Account, Accela或者Generic。
OpenID Connect:适用于依赖方为Google Account。
【注意】 新增,修改删除第三方认证配置,需要重启Virtual Appliance’s Management服务。
单点登陆地址
替换原先导航地址https://<smarts-host>/smarts, 使用如下导航地址 https://<smarts-host>/smarts/sso?authenticationType=<providerName>
providerName值为以下一种:
· ActiveDirectoryLds
· Azure
· AzureFederation
· Microsoft
· Accela
· Generic
注意值为大小写敏感
使用该导航地址,会向你的身份验证提供服务进行身份验证,如果已通过身份验证,则会跳过登陆页面,如果没有通过身份验证,则会请求到身份验证服务提供的UI界面进行身份验证登陆。
如果希望使用OAuth2或WS-Federation协议认证,但SMARTS没有提供现成配置的服务集成,则可以使用此身份验证提供程序:
设置通用(Generic)认证提供程序
· 依赖方选择为【通用】
· 协议选择为OAuth2或WS-Federation
注意:不要忘记重新启动虚拟设备的“管理”服务(Decision Management Application Pool)
2.1 OAuth2协议
向OAuth2身份验证服务注册SMARTS应用程序时,可能需要重定向URI,在这种情况下,它应为:https://<SMARTS host>/AuthServer/signin generic
你需要提供如下配置:
授权端点: OAuth2认证服务器的授权地址,地址类似为/oauth/authorize
Token端点: OAuth2认证服务器获取Token的地址,地址类似为/oauth/token
元数据端点: 在OAuth2协议下不用填写
用户资料端点: 获取到AccessToken后,会访问该地址获取用户信息,用户资料端点不是标准的OAuth2的一部分,可能需要自己实现,从header的Authorization中获取access_token然后获取关联的用户信息,并将用户名信息和唯一ID信息作为json格式返回。一般来说只需要两个信息一个是用户名信息,一个是唯一ID信息。
用户名表述: 是一个JSON-PATH表达式,根据用户资料端点返回json格式来定义,通常是一个登陆用户的用户名。
唯一ID表述:是一个JSON-PATH表达式,根据用户资料端点返回json格式来定义,通常是一个登陆用户的ID标识。
如果用户资料端点返回的用户信息json格式为:
{"username":"zhangsan", "identity":"111000"}
那么用户名表述值为$.username,唯一ID表述值为$.identity
客户端ID: OAuth2的clientId
客户端机密: OAuth2的secret
范围: OAuth2的scope
附件选项:以分号分隔的配置项列表,可以使用以下参数项:
· AuthenticationParameter: 当身份验证提供程序需要不属于OAuth2协议规范的其它身份验证参数时,可以用如下方式添加:
AuthenticationParameter=forceprompt=true;AuthenticationParameter=consent=user
· AllowCertificateValidationErrors:默认情况下,所有与身份验证服务器的通信都需要HTTPS/SSL和有效证书。
例如,如果证书是自签名证书时,可以通过指定AllowCertificateValidationErrors使通信正常。示例:
AllowCertificateValidationErrors=true
在登陆页面,如果配置了第三方认证服务,会有额外的一个蓝色登陆按钮,点击登陆,这时候会导航到你认证服务器的登陆页面,输入登陆凭据,如果通信正确建立,用户通过认证,页面会跳转到登陆工作区选择页面。
此时工作区选项可能会没有可选择的工作区,这是因为虽然用户身份验证成功了,但由于此用户不是SMARTS的注册用户,因此它没有访问工作区的任何授权。
无论是否使用第三方身份验证提供程序,用户管理基本上保持不变。为了让第三方认证服务可以对用户进行身份验证,创建用户时必须包含如下信息:
ID: 这个是第三方认证服务提供的用户的唯一标识,用于关联第三方认证用户与SMARTS用户。(使用OAuth2协议时,该值为用户资料端点【唯一ID表述】的值)
Issuer: 使用的哪种provider, 也就是providerName的值。(使用OAuth2协议时,该值为Generic)
单点登录配置说明