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
'programing' 카테고리의 다른 글
연결 문자열에서 "서버"와 "데이터 원본" 비교 (0) | 2023.05.23 |
---|---|
Mongoose를 사용한 사용자 지정 오류 메시지 (0) | 2023.05.23 |
Mongoose 스키마에서 어레이 크기에 대한 제한을 설정하는 방법 (0) | 2023.05.23 |
bash 스크립트의 조건인 경우 negate (0) | 2023.05.23 |
WPF에서 버튼을 프로그래밍 방식으로 클릭하는 방법은 무엇입니까? (0) | 2023.05.23 |