我的应用程序使用firebase身份验证,只有来自G套件域的用户才能成功地进行身份验证。我的作用域设置如下:
var provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('https://www.googleapis.com/auth/admin.directory.user')
provider.addScope('https://www.googleapis.com/auth/admin.directory.user.readonly')
provider.addScope('https://www.googleapis.com/auth/devstorage.read_only')
firebase.auth().signInWithRedirect(provider)我的理解是,我可以使用上述登录流返回的访问令牌,用于http请求,从Google桶中读取对象。我将访问令牌作为标题插入,如下所示:
Authorization: 'Bearer xyz123'
对于我的非公共桶,我启用了统一的桶级访问,其中包含一个IAM角色,允许来自G套件域的用户从桶中读取数据。
但是,这是不起作用的,因为我得到403个对http请求的响应。为了获得更多的上下文,我将向量块托管在桶中,mapbox正在使用它。
知道我哪里出问题了吗?
我确信这是一个权限问题,而不是mapbox配置或向量瓷砖本身的问题。当我把水桶公之于众的时候,一切都很正常。我正在挣扎的是如何将对向量块的访问限制在我的G Suite域中的用户。
发布于 2021-01-18 16:53:45
所以,我以上所做的是正确的。然而,我遗漏了一个部分:我的的cors设置需要更新以替换
origin: "*"使用
origin: ["https://domain-name-where-request-comes-from.com", "https://and-dev-site-for-that-domain.com"]根据其他规范,当期望凭据作为请求的一部分时,不接受*通配符。
我还需要更新cors设置的responseHeader:
"responseHeader": ["X-Requested-With", "Access-Control-Allow-Origin", "Content-Type", "Authorization"]通过将OAuth令牌插入mapbox请求的标头(通过transformRequset方法),我可以成功地请求和接收瓷砖。
https://stackoverflow.com/questions/65763668
复制相似问题