是否可以使用客户端凭据授予类型对 SailPoint(IAM)

问题描述

我有一个用 VB.NET 编写的旧 Windows 应用程序,带有 sql 服务器后端。目前,新用户添加删除添加权限等由旧的审批工作流系统管理。获得批准后,将手动将用户详细信息和权限插入到 sql Server 数据库表中。

我正在尝试将此应用程序与 SailPoint's 身份和访问管理集成。所以新用户添加删除更新和添加权限等都会通过Sailpoint来完成。为此,我需要创建一个可由 Sailpoint 调用的 WEB API 并公开功能添加用户/删除用户/添加权限)。此 API 的唯一使用者是 SailPoint。

我是 OAuth 的新手,以下是我遇到的授权类型。但不确定在这个特定场景中我应该使用哪一个
1.隐式授予
2.资源所有者密码凭证授予
3.客户凭证授予
4.授权码授予

我对可用于保护 Web API 的不同身份验证方法进行了研究。但是仍然对在这种情况下应用哪一个感到困惑,因为这个新的 web api 将在互联网上提供。 我已经尝试使用 OAuth 2.0 开发 POC,密码 授权类型引用 this article。但是当我在互联网上阅读文章时,我发现密码授予类型不是那么安全并且已被弃用。

您能否建议在这种情况下使用哪种授权类型(客户端凭据/授权代码/隐式)。我相信当用户直接尝试访问 API 时会使用授权码。在这种情况下,SailPoint 将在其 UI 中插入新用户时以编程方式调用后端中的 API。

解决方法

我认为在这种情况下使用客户端凭据是一种很好的方法,因为 IIQ 和您的 Web API 之间的通信可以被视为 API 到 API 的通信,我的意思是,IIQ 在此通信中代表自己行事。

查看这篇文章了解更多详情 - https://dzone.com/articles/four-most-used-rest-api-authentication-methods(我自己加粗部分)

OAuth 2.0 提供了几种适用于不同类型的流行流程 API 客户端:

授权码——最常见的流程,主要用于 服务器端和移动 Web 应用程序。此流程类似于 用户使用 Facebook 或 Google 注册 Web 应用程序 帐户。

隐式——这个流程要求客户端检索一个 直接访问令牌。这在用户的情况下很有用 凭据不能存储在客户端代码中,因为它们可以 容易被第三方访问。适用于网页、桌面、 和不包含任何服务器组件的移动应用程序。

资源所有者密码 — 需要使用用户名和 密码。在这种情况下,凭据将成为请求的一部分。 此流程仅适用于受信任的客户端(例如,官方 API 提供商发布的应用程序)。

客户凭据用于服务器到服务器身份验证,此流程描述 当客户端应用程序代表自己而不是 而不是代表任何个人用户。在大多数情况下,此流程 提供允许用户在 客户端应用程序,因此它可以访问客户端下的资源 控制。