我正在努力寻找解决以下问题的最佳方法:我们的应用程序是SaaS,它支持用于web登录的SAML.该应用程序还公开了应该在自动化和无人参与的流程中使用的REST API,这意味着没有交互式用户可以键入凭据。我们需要允许开发人员以编程方式根据相关的IdP (已经定义,因为用于API访问的相同凭据也可以用于访问web应用程序)对无人参与进程进行身份验证。
我设想的流程如下:程序使用专用API进行身份验证,获取令牌,并将令牌用于下一次调用。
在搜索保护REST API的最佳方法时,我找到的大多数答案都建议使用oAuth,这通常需要一个交互式用户,因为它们讨论了一个交互式应用程序尝试代表输入密码的用户访问其他系统中的REST API。oAuth也是我挑战的答案吗?如果是这样,流程是什么?
谢谢!
发布于 2014-12-29 02:27:19
实际上,OAuth 2.0可以用于此用例,因为它允许所谓的客户端(即您的无人值守进程)获得开发人员授予的访问令牌,并对您的API使用该令牌。
这里使用的典型流程是代码流:您将运行一个授权服务器,如果开发人员同意,该服务器将向客户端发布令牌。开发人员将使用SAML Web SSO登录到授权服务器。
请注意,它在访问REST API时不需要活动用户,但在令牌发布时需要一个活动用户。我相信这就是你真正想要的。如果不是这样,还有其他可以利用的流,这些流根本不需要活动用户,但我认为它们不适合这个特定的用例;毕竟,您希望客户端代表开发人员操作。
除了访问令牌之外,您的授权服务器还可以向客户端发出刷新令牌,以便在旧访问令牌到期时,您的客户端可以使用刷新令牌从授权服务器获取新的访问令牌,而不必再次(以交互方式)涉及开发人员。
https://stackoverflow.com/questions/27677537
复制相似问题