有没有一种方法可以请求存储桶特定的读取范围?

时间:2019-08-07 08:26:42

标签: oauth autodesk-forge autodesk-data-management

我正在尝试找到一种方法来限制对应用程序中每个存储桶的访问。目的是防止用户访问“分配”到其他存储桶之外的其他存储桶。

简而言之,该应用程序为每个用户分配了一个存储桶,以在其中存储对象,而我想防止用户访问并非由其访问的存储桶。

我想一个请求可能看起来像这样:

curl -v 'https://developer.api.autodesk.com/authentication/v1/authenticate'
  -X 'POST'
  -H 'Content-Type: application/x-www-form-urlencoded'
  -d '
    client_id=obQDn8P0GanGFQha4ngKKVWcxwyvFAGE&
    client_secret=eUruM8HRyc7BAQ1e&
    grant_type=client_credentials&
    scope=data:read&
    # I'm thinking for some parameter like this
    bucket=CLIEN_SPECIFIC_BUCKET_ID
  '

1 个答案:

答案 0 :(得分:0)

您应该实现自己的应用管理层,以管理对不同存储桶的用户权限-最佳做法是,用户不应接触应用级访问令牌来访问存储桶本身。

将Forge云存储到Forge应用程序而不是最终用户,因为它是开发平台,并且在开发人员/应用程序级别(而不是最终用户)上运行。

编辑:

对于Viewer,您可以使用AOP方法并在后端中设置代理,然后将身份验证委托给代理-您可以重定向Viewer以将请求发送到端点以检索资源,而后端可以依次验证和检索来自Forge服务的资源,这样您就不必向用户公开访问令牌。试试:

Autodesk.Viewing.endpoint.setEndpointAndApi('https://yourhostname/your/proxy/service/path')

您还可以在Viewer的请求中添加自定义标题,以针对您自己的应用进行身份验证:

Autodesk.Viewing.endpoint.HTTP_REQUEST_HEADERS = {}

您也可以将衍生产品下载到自己的存储中,然后从那里加载它们-有关详细信息,请参见here