簡體   English   中英

AWS API Gateway自定義授權者角色驗證

[英]AWS API Gateway Custom Authorizer Role Validation

是否有任何方法可以在API網關方法上指定允許的范圍,以便將允許的范圍傳遞給自定義授權者並針對訪問令牌中的范圍聲明進行驗證。

例如,獲取用戶端點可能對所有用戶可用,但是創建用戶端點僅對具有create:user范圍的用戶可用。 除了確保訪問令牌有效之外,定制授權者還將檢查令牌中的范圍聲明,並將其與該方法的允許范圍進行比較。

不必為所需范圍的每種組合編寫不同的授權者函數。

我注意到Cognito可能會發生這種情況,但是我的身份提供者/令牌發行者是Auth0,因此使用Lambda函數來驗證訪問令牌

親切的問候

您應該能夠使用單個Lambda Authorizer基於令牌范圍保護兩個端點。 您將要使用基於請求的增強型Lambda授權器

您在Authorization標頭中傳遞訪問令牌,並在處理請求之前驗證訪問令牌簽名和有效期。

授權者收到的Event對象的示例:

{
    "methodArn": "arn:aws:execute-api:us-east-1:XXXXXXXXXX:xxxxxx/dev/GET/hello",
    "resource": "/hello",
    "requestContext": {
        "resourceId": "xxxx",
        "apiId": "xxxxxxxxx",
        "resourcePath": "/hello",
        "httpMethod": "GET",
        "requestId": "9e04ff18-98a6-11e7-9311-ef19ba18fc8a",
        "path": "/dev/hello",
        "accountId": "XXXXXXXXXXX",
        "identity": {
            "apiKey": "",
            "sourceIp": "58.240.196.186"
        },
        "stage": "dev"
    },
    "queryStringParameters": {},
    "httpMethod": "GET",
    "pathParameters": {},
    "headers": {
        "cache-control": "no-cache",
        "x-amzn-ssl-client-hello": "AQACJAMDAAAAAAAAAAAAAAAAAAAAAAAAAAAA…",
        "Accept-Encoding": "gzip, deflate",
        "X-Forwarded-For": "54.240.196.186, 54.182.214.90",
        "Accept": "*/*",
        "User-Agent": "PostmanRuntime/6.2.5",
        "Authorization": "hello"
    },
    "stageVariables": {},
    "path": "/hello",
    "type": "REQUEST"
}

您可以通過event.requestContext.resourcePathevent.requestContext.httpMethod組合來標識請求。 根據請求類型和令牌中定義的范圍,您可以返回“允許”或“拒絕”策略。 例如,如果請求是針對創建用戶端點的,但訪問令牌不包括create:user范圍,則您將返回策略以拒絕該請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM