我的WEB API托管在Docker中。我的Angular客户端将发送JWT令牌以访问这些API中的任何一个。我想在调用请求的API客户端之前利用AWS API Gateway功能添加授权检查。从docs中,我们可以利用Lambda Authorizer概念来实现这一目标。但是话又说回来,尽管我可以使用Lambda Authorizer来提供一个可以验证用户身份的DOT NET CORE API。
我看到这就是响应应该/可能看起来像的样子。就我而言,这应该如何翻译
Traceback (most recent call last):
File "D:/python/test6.py", line 7, in <module>
"password": new_lines[1]})
IndexError: list index out of range
答案 0 :(得分:1)
如果要使用Lambda授权器,则需要返回Allow
或Deny
策略。
这实际上授予了API网关调用底层目标的权限。我知道乍一看听起来很奇怪,但这就是它的工作原理。将Allow
策略想像为true
返回语句(匹配凭据),而Deny
策略更像是false
返回语句(凭据不匹配) /根据您的规则等,权限不足。
为使您踏上第一步,您只需复制/粘贴docs上可用的代码,然后根据自己的喜好修改身份验证方式(文档显示的示例使用带有Allow
或{ {1}}值,这绝对不是您想要的值,仅是出于示例的目的。
因此,通过列举所有答案返回您的问题:
Deny
或Allow
策略。 Deny
策略响应,则它将调用目标(可以是Lambda函数,SNS主题,HTTP端点-这可能是您的情况-依此类推)。授权者将仅充当拦截器,并决定是否将呼叫代理到目标。 答案 1 :(得分:0)
根据我对问题的理解,您想验证正在调用API的用户。
您可以使用已经提到的所有方式来做到这一点。 使用Lambda Authorizers,您将获得200或403代码,不是true false。您可以点击以下链接来设置授权者:
https://blog.codecentric.de/en/2018/04/aws-lambda-authorizer/
您还可以使用AWS Cognito来管理用户,这将大大简化您的工作。
答案 2 :(得分:0)
Amazon Cognito可让您快速轻松地将用户注册,登录以及访问控制添加到您的Web和移动应用程序。 Amazon Cognito可以扩展到数百万用户,并支持通过SAML 2.0与社交身份提供商(例如Facebook,Google和Amazon)以及企业身份提供商进行登录。
使用Cognito的优点: 托管服务,可减少实施/监控/扩展的组件
可通过门户,CLI和模板轻松配置
支持多种身份验证流程(客户端,服务器端,OAuth2,自定义)
在身份验证/注册事件上支持Lambda触发功能
使用JWT签名的令牌,这些令牌可以直接在会话cookie中传递给客户端,并用于验证请求并在相关的API调用中传递,因此可以通过您的堆栈无状态使用单个身份验证/授权方法。组成员身份由访问令牌提供用于授权(例如,“ Admin”组中的用户可以执行管理功能)
句柄:
用户组成员身份和属性存储
电子邮件/电话验证
用户邀请
登录/注册UI表单(可自定义)
密码重置
缺点:
答案 3 :(得分:0)
您只需将dotnet核心api添加到“集成请求”选项卡,选择“集成类型”作为HTTP,然后在Endpoint URL字段中提及dotnet核心api