小编Fre*_*ert的帖子

AWS Cloudfront(使用WAF)+ API网关:如何通过Cloudfront强制访问?

我想把WAF放在API网关的前面,并且我发现只有通过在APIG面前手动添加启用了WAF的额外Cloudfront发行版才能获得(小)信息.这有点遗憾,特别是因为APIG现在本身支持自定义域,但它应该有效.

现在为了使解决方案安全而不仅仅是模糊,我想强制要求只能通过Cloudfront发行版访问API.这样做的最佳选择是什么?

  • 我希望能够使用类似于S3的'Origin Access Identities',但不知道如何做到这一点.
  • 如果我可以将一个IAM用户(或角色?)分配给Cloudfront发行版,我可以使用API​​G IAM功能,但我不知道如何做到这一点.
  • 我可能需要在APIG中使用API​​密钥,并将其作为来自Cloudfront的Origin Custom Header传递.这可能有用,只要我们不想将API密钥用于其他目的,所以我对此并不完全满意.
  • 可以使用虚拟(!)自定义授权程序,令牌验证表达式实际检查从Cloudfront作为Origin自定义标头传递的秘密.应该工作,它更灵活,但有点脏......或不?

有更好的想法吗?或者也许"正确的方式"存在,但我忽略了它?

amazon-web-services amazon-cloudfront aws-api-gateway amazon-waf

13
推荐指数
1
解决办法
4691
查看次数

从Chrome自定义标签重定向到Android应用时,"导航被屏蔽"

我正在"现代化"我们的登录小部件以使用Chrome自定义标签,因为Google将在几个月内开始使用网页浏览来阻止OAuth请求.

登录小部件与我们的身份服务一起使用,该服务支持经典的"用户名和密码"登录和社交登录,通过Google/Facebook /授权代码流中的OAuth2"客户端"播放...因此Google的授权代码将传送给此身份服务,它又为我们的登录窗口小部件提供访问令牌.

访问令牌通过客户端重定向传递回移动应用程序:

window.location.replace('com.acmeusercontent.tenants.abc:\/setTokenData?accessToken='+access_token+'#');
Run Code Online (Sandbox Code Playgroud)

一切都适合经典登录:用户填写用户名和密码并提交,返回访问令牌,重定向到自定义URI方案会触发我的RedirectReceiverActivity的intent-filter.

但是,对于社交登录,重定向没有任何反应,除了Android监视器中的这一行:

I/chromium: [INFO:CONSOLE(0)] "Navigation is blocked: com.acmeusercontent.tenants.abc:/setTokenData..."
Run Code Online (Sandbox Code Playgroud)

需要明确的是:对于经典登录和社交登录,客户端重定向完全相同,但在经典登录后,允许在社交登录后被阻止!并且,如果我向窗口小部件添加一个按钮,该按钮在社交登录后执行完全相同的重定向,则只要用户单击它就可以再次允许.

这让我感到困惑: - 为什么重定向有时会被允许,有时会被阻止?- 除了要求用户在社交登录序列完成后单击按钮之外,还有什么方法可以解决这个问题吗?

我尝试了我能想到的一切:使用"intent:"语法,使用服务器端重定向模拟从代码中单击按钮,......但没有任何作用.此外,我使用Google身份验证示例研究了AppAuth库,据我所知,我做的完全相同.

android oauth mobile-chrome chrome-custom-tabs appauth

12
推荐指数
1
解决办法
4821
查看次数

AWS Step Function中的lambda可以知道它所在步骤的名称吗?

对于在step函数中执行的lambda,我有点期望我可以从lambda上下文中获取当前步骤的名称,但它似乎并不那么简单.

有没有办法获得在步骤函数中执行的lambda中当前步骤的名称?

aws-lambda aws-step-functions

11
推荐指数
2
解决办法
3023
查看次数

如何为OAuth2访问令牌指定受众?

我很困惑,在向授权服务器发送授权请求时似乎没有标准方法来指定访问令牌的受众.

OAuth2将访问令牌指定为不透明字符串; 在规范中只提到一个"观众",说访问令牌可能是"受众限制".许多最近的授权服务器实现似乎产生JWT访问令牌,JWT指定了受众(aud)声明.

据我所知: - Auth0使用'audience'参数 - Connect2id使用'resource'参数 - Identity Server使用固定的基于发行者的值来'aud'声明,并假设范围足够 - 但是,这不是适合所有用例. - 优秀的"OAuth2 in Action"一书中显示了"aud"声明中的资源服务器URI的示例,但未说明它来自何处.

那么,如何以标准方式获取特定受众(资源服务器,API,...)的访问令牌?

oauth access-token oauth-2.0 jwt

8
推荐指数
1
解决办法
5185
查看次数

如何比较Amazon S3对象的版本?

Amazon S3存储桶的版本控制很不错,但我没有看到任何简单的方法来比较文件的版本 - 通过控制台或我找到的任何其他应用程序.

S3Browser似乎有最好的版本支持,但没有比较.

有没有办法比较S3上的文件版本而不下载两个版本并手动比较它们?

-

编辑:我刚开始认为一些基本的自动化不应该太难,请参阅下面的代码片段.问题仍然存在:是否有任何工具可以正确支持?这个脚本对我来说可能没问题,但对于非开发用户则不行.

#!/bin/bash

# s3-compare-last-versions.sh

if [[ $# -ne 2 ]]; then
    echo "Usage: `basename $0` <bucketName> <fileKey> "
    exit 1
fi

bucketName=$1
fileKey=$2

latestVersionId=$(aws s3api list-object-versions --bucket $bucketName --prefix $fileKey --max-items 2 | json Versions[0].VersionId)
previousVersionId=$(aws s3api list-object-versions --bucket $bucketName --prefix $fileKey --max-items 2 | json Versions[1].VersionId)

aws s3api get-object --bucket $bucketName --key $fileKey --version-id $latestVersionId $latestVersionId".js"
aws s3api get-object --bucket $bucketName --key $fileKey --version-id $previousVersionId $previousVersionId".js"

diff $latestVersionId".js" $previousVersionId".js"
Run Code Online (Sandbox Code Playgroud)

compare version amazon-s3 amazon-web-services

6
推荐指数
2
解决办法
2797
查看次数