我们有一个web api项目(.net),我们计划实施AWS API网关来处理身份验证,缓存,e.t.c。但我们要求限制用户的访问权限,例如从一组ID中,用户可以访问ID子集的数据。现在我们只想在AWS端处理身份验证,但我不知道如何考虑到我们手头的要求,我们如何实现这一目标。
此外,我们是否可以将Identity Server 3与AWS API Gateway集成以进行自定义身份验证。
P.S。在IIS服务器和后端托管的Web Api 2.2是SQL服务器,因此我们仅使用AWS和api网关,我们使用我们的infra进行托管。我们确实有Identity Server 3,但它目前用作另一个应用程序的auth服务器。
答案 0 :(得分:0)
听起来您在API网关中看到了自定义授权功能。如果Identity Server是可公开寻址的,则可以使用Lambda授权程序功能对其进行身份验证。
假设客户端在标头中发送了一些授权令牌,您的Lambda函数可以获取令牌并使用Identity Server进行身份验证。然后,您应该能够将调用者的访问权限转换为IAM策略。
如果您的API资源设置如下:
/user/{id}/data
您可以通过访问特定的id
值来构建授权程序结果:
{
"principalId": "yyyyyyyy", // The principal user identification associated with the token sent by the client.
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Effect": "Allow",
"Resource": [
"arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-1/data",
"arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-61/data",
"arn:aws:execute-api:<regionId>:<accountId>:<restApiId>/<stage>/<httpVerb>/user/id-4/data"
]
}
]
},
"context": {
"key": "value",
"numKey": 1,
"boolKey": true
}
}