我有一个Web项目,需要从托管的versionone实例中提取一些数据。 versionone实例使用SAML
身份验证进行单点登录。
单点登录本身使用用户名和pin +一次性密码进行身份验证,因此几乎不可能将这些值硬编码到应用程序中。
有没有办法处理这种情况?我可以在请求的标头中设置一些内容以绕过单点登录过程吗?
最佳答案
从版本13.1开始,VersionOne支持OAuth2来针对API端点进行身份验证。支持Web服务器流(托管实例将auth令牌发布到等待的HTTP服务器)和带外流程(托管实例为用户提供了要复制/粘贴到客户端的代码)。
这可能更符合您的要求,因为如果没有Web浏览器和用户在场,SAML流程将很难完成。
应用获得OAuth2凭据后,即可在无需用户干预的情况下运行。用户可以随时在VersionOne内部撤消该应用程序的权限。
使用OAuth2,过程为:
向VersionOne注册您的应用程序,从而创建客户端机密
使用注册中的客户端机密数据配置应用
让应用程序请求权限授予,这会将您发送到VersionOne服务器。
以您希望应用充当的用户身份登录服务器,并接受授权。
如果使用带外流程,则将授权码复制回应用程序。
该应用程序联系VersionOne实例,并将代码交换为永久令牌。
该应用程序可以将令牌用作“ Authorization:Bearer” HTTP标头,以实现对VersionOne端点的访问
如果令牌已过期并且请求返回未授权,则客户端可以尝试刷新令牌并重试,而无需用户干预。
VersionOne community site上有一些文档。
还有VersionOne OAuth2 Examples repository中的一些(进行中)示例
我们还有一个(beta)HTTP proxy,它可以在您应用的服务器上运行,在将请求封装为OAuth2和SSL之后,将请求转发到VersionOne实例。