我想把WAF放在API网关的前面,并且我发现只有通过在APIG面前手动添加启用了WAF的额外Cloudfront发行版才能获得(小)信息.这有点遗憾,特别是因为APIG现在本身支持自定义域,但它应该有效.
现在为了使解决方案安全而不仅仅是模糊,我想强制要求只能通过Cloudfront发行版访问API.这样做的最佳选择是什么?
有更好的想法吗?或者也许"正确的方式"存在,但我忽略了它?
amazon-web-services amazon-cloudfront aws-api-gateway amazon-waf
我正在"现代化"我们的登录小部件以使用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库,据我所知,我做的完全相同.
对于在step函数中执行的lambda,我有点期望我可以从lambda上下文中获取当前步骤的名称,但它似乎并不那么简单.
有没有办法获得在步骤函数中执行的lambda中当前步骤的名称?
我很困惑,在向授权服务器发送授权请求时似乎没有标准方法来指定访问令牌的受众.
OAuth2将访问令牌指定为不透明字符串; 在规范中只提到一个"观众",说访问令牌可能是"受众限制".许多最近的授权服务器实现似乎产生JWT访问令牌,JWT指定了受众(aud)声明.
据我所知: - Auth0使用'audience'参数 - Connect2id使用'resource'参数 - Identity Server使用固定的基于发行者的值来'aud'声明,并假设范围足够 - 但是,这不是适合所有用例. - 优秀的"OAuth2 in Action"一书中显示了"aud"声明中的资源服务器URI的示例,但未说明它来自何处.
那么,如何以标准方式获取特定受众(资源服务器,API,...)的访问令牌?
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) oauth ×2
access-token ×1
amazon-s3 ×1
amazon-waf ×1
android ×1
appauth ×1
aws-lambda ×1
compare ×1
jwt ×1
oauth-2.0 ×1
version ×1