使用OKTA和OAUTH对我的REST应用程序端点的端点进行细粒度访问控制

时间:2019-06-19 08:30:43

标签: oauth oauth-2.0 authorization okta

概述


我有一个REST应用,其中包含1个端点/ ebook

它具有3个与之关联的HTTP动词:获取(用于获取电子书详细信息),发布(用于添加电子书),删除(用于删除电子书)

获取电子书可供系统中的所有用户使用。 创建和删除电子书需要管理员权限。

我希望只有管理员访问权限的用户才能添加或删除电子书,换句话说,只有只读访问权限的用户应该不能添加或删除电子书。

我无法设置此级别的细粒度访问。通过我的设置,即使只有只读权限的用户也可以添加,删除电子书。


OKTA配置

我已经配置了电子书应用程序,并将OKTA配置为授权服务器。我可以获取访问令牌来访问应用程序

所有用户都可以使用获取电子书,为此我在OKTA授权服务器中创建了范围电子书:read。 创建和删除电子书需要管理员权限,并且我已经为此创建了范围电子书:修改

我在OKTA中创建了两个用户应用程序。

  1. ReaderApp-此应用程序只能用于阅读电子书。
  2. AdminApp-此应用程序可用于阅读,添加和删除电子书

我已将所需的用户/组分配给这些应用程序。

接下来,我在授权服务器中创建了2个访问策略

  1. 读取访问策略-对于该策略,我已将ReaderApp分配为客户端,并创建了一个规则来接受“任何分配了该应用程序的用户”,并且请求的范围为“ ebook:read”
  2. 管理员访问策略-对于该策略,我已将AdminApp分配为客户端,并创建了一个规则以接受“任何分配了该应用程序的用户”,并且请求的范围为“ ebook:read”,“ ebook:modify”

在“授权服务器”中,我仅添加了“范围”和“访问策略”,但没有涉及到诸如Claim等其他内容。


问题

以下内容对我来说一直有效:

  1. 没有访问令牌,AdminApp和ReaderApp都无法访问电子书
  2. ReaderApp通过请求 ebook:read 范围成功地从EbookApp访问电子书。
  3. ReaderApp通过请求 ebook:modify 作用域未能在EbookApp中创建/删除电子书。
  4. 通过请求 ebook:modify 范围,
  5. AdminApp成功读取/创建/删除了EbookApp中的电子书。

但是,以下内容不能正常工作:

  1. ReaderApp能够读取/创建/删除其中的电子书 通过请求 ebook:read 范围。 这不应该发生

是否有可能通过请求“ ebook:read”作用域来阻止ReaderApp创建/删除电子书。

Applications AdminApp和ReaderApp都使用相同的端点/ ebook。

对于ReaderApp,即使在使用范围保护了它们的情况下,也无法在该终结点中访问 post delete 方法,但是它并不直接与终结点相关联是问题

我想我可能已经错过了一些非常基础的东西,但是由于我是OKTA的新手,所以我还无法弄清楚。

这是我必须在Ebook应用程序(资源服务器)本身中配置的东西,还是只能通过某些Authorization Server配置使用OKTA处理这种情况? 欢迎任何建议。

注意:在这篇文章中,为了清楚起见,我只提到了1个端点,其中很少有http动词,但是在我的实际应用中,有很多端点

0 个答案:

没有答案