programing

zure HTTP Trigger 기능을 실행하면 401이 인증되지 않습니다.

minimums 2023. 5. 23. 21:43
반응형

zure HTTP Trigger 기능을 실행하면 401이 인증되지 않습니다.

Azure HTTP Trigger Azure Function을 실행하려고 하는데 다음 메시지가 표시됩니다.401 Unauthorized아까는 잘 작동했어요.

동일한 Function App에서 새로운 기능을 생성하고 동일한 코드를 복사했을 때도 정상적으로 실행되고 있지만 생성된 기능을 실행하려고 하면 앞서 언급한 것과 동일한 오류가 발생합니다.

스트리밍 서비스에 다음 로그가 있습니다.

2018-07-02T07:09:41 환영합니다, 이제 로그 스트리밍 서비스에 연결되었습니다.

2018-07-02T07:09:48.893 [Info] HTTP 요청 실행: {"requestId": "53e54698-c46b-4cb6-9ed0-d042eaf9ec71", "method": "POST", "uri": "/api/Source/MPA/false" }

2018-07-02T07:09:48.893 [Info] 실행된 HTTP 요청: {"requestId": "53e54698-c46b-4cb6-9ed0-d042eaf9ec71", "method": "POST", "uri": "/api/Source/MPA/false", "인증 수준": "익명", "상태": "Unauthorized" }

위의 Nick이 정확하게 제공한 원인을 바탕으로 문제를 해결한 방법입니다.코드를 누를 때마다 Azure Function의 GUI를 열지 않으려면 이 작업을 수행합니다.

함수의 소스 코드:

[FunctionName("YourFunctionName")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
    ILogger log){

내가 해야 할 일은 기본 설정을 변경하는 것이었습니다.AuthorizationLevel.Function안으로AuthorizationLevel.Anonymous전자는 다른 Function 앱에서만 트리거를 허용하며, 후자는 브라우저에서 트리거할 수 있습니다.

zure 포털을 통해 코드를 관리하는 경우 "통합"으로 이동하고 "인증 수준" 드롭다운을 "익명"으로 변경합니다.여기에 이미지 설명 입력

소스 제어 통합(예: git)을 통해 코드를 관리하는 경우 이를 추가합니다.function.json:

"authLevel": "anonymous"

의 전체 토막글function.json:

{
  "bindings": [
    {
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [ "post" ],
      "route": "Source/MPAA",
      "authLevel": "anonymous"
    },
    {
      "type": "http",
      "name": "res",
      "direction": "out"
    }
  ],
  "disabled": false
}

참고: 위의 내용은 예시일 뿐이므로 경로를 조정해야 할 수도 있습니다.참고: /api는 기본 접두사이며 다음에서 수정할 수 있습니다.host.json파일.

함수의 인증 수준에 관한 것입니다.function.json 파일에서 authlevel = anonymous를 사용하는 경우.그러면 액세스 키를 전달할 필요가 없고 일반 api 끝점처럼 azure 함수 api에 액세스할 수 있습니다.

{
"disabled": false,    
"bindings": [
    {
        "authLevel": "anonymous",
        "type": "httpTrigger",
        "direction": "in",
        "name": "req"
    },
    {
        "type": "http",
        "direction": "out",
        "name": "res"
    }
]

}

예를 들어 http 트리거는 http://<APP_NAME>.azurewebsites.net/api/ <입니다.FUNCTION_NAME > 접근/인증 키 없이 쉽게 접근할 수 있습니다.

authlevel = 기능을 사용하는 경우 액세스 키/Api 키를 http 트리거 끝점과 함께 전달하고 이를 눌러야 합니다.그렇게 하지 않으면 401이 허가되지 않습니다.

    {
"disabled": false,    
"bindings": [
    {
        "authLevel": "function",
        "type": "httpTrigger",
        "direction": "in",
        "name": "req"
    },
    {
        "type": "http",
        "direction": "out",
        "name": "res"
    }
]

}

당신은 아래 예시와 같이 키를 전달해야 합니다.**https://<APP_NAME>.azurewebsites.net/api/ <FUNCTION_NAME>?code=<API_KEY> **

auth level = 기능의 경우 기능 키와 호스트 키로 http 트리거에 액세스할 수 있습니다.Azure 포털에서 함수를 열면 Get Function Url 섹션을 찾을 수 있습니다.

참고 호스트 키를 사용하면 모든 http 트리거 엔드포인트에 액세스할 수 있습니다. 모든 http 트리거에 공통적으로 적용됩니다.그러나 기능 키는 모든 기능에 대해 고유합니다.

세 번째 옵션은 auth level = admin을 사용하는 것입니다.

{
"disabled": false,    
"bindings": [
    {
        "authLevel": "admin",
        "type": "httpTrigger",
        "direction": "in",
        "name": "req"
    },
    {
        "type": "http",
        "direction": "out",
        "name": "res"
    }
]

}

인증 수준 관리자의 경우 마스터 키로만 http 트리거에 액세스할 수 있습니다.**https://<APP_NAME>.azurewebsites.net/api/ <FUNCTION_NAME>?code=<마스터_KEY> **

이러한 모든 키는 Get Function Url 섹션의 인증 수준에 따라 찾을 수 있습니다.인증 수준에 대한 전체 가이드는 이 링크에 있습니다.Azure Functions HTTP 트리거 함수 authlevel 설명

이것이 도움이 되기를 바랍니다.

나는 받기 시작했습니다.401내가 같은 경로를 가진 두 가지 기능을 가지고 있다는 것을 깨닫기 전까지는 마찬가지였습니다.그것은 분명히 애저를 크게 혼란스럽게 했습니다.

동일한 경로로 다른 기능이 없는지 확인합니다.

저는 Azure Portal을 통해 함수 런타임 버전을 변경한 후 이 응답을 보게 되었습니다.Visual Studio에서 기능 앱을 다시 배포하여 문제를 해결했습니다.

언급URL : https://stackoverflow.com/questions/51130370/when-i-am-running-azure-http-trigger-function-i-am-getting-401-unauthorized

반응형