당신은 하나 here 유사한 사용자 정의 인증 처리기를 만들 수 있습니다.
services.AddAuthorization(
o =>
{
// create a policy called ApiKeyPolicy which requires a Role defined in
// ApiKeyAuthenticationOptions.
// The policy is used by the API controllers.
o.AddPolicy(
"ApiKeyPolicy", builder =>
{
builder.AddAuthenticationSchemes(
ApiKeyAuthenticationOptions.AuthenticationSchemeName);
});
});
을하고 services.AddAuthentication
빌더 계획을 추가합니다 : 당신이 Startup.cs에 권한을 추가 그리고
, 당신은 다음과 같이 사용자 지정 정책을 추가 할 수 있습니다
builder.AddScheme<ApiKeyAuthenticationOptions, ApiKeyAuthenticationHandler>(
"ApiKey", "ApiKey", o =>
{
o.AllowedApiKeys = config["Api:AllowedApiKeys"];
o.ApiKeyHeaderName = config["Api:ApiKeyHeaderName"];
});
내 예에서 일부 API 키와 확인 할 http 헤더 이름으로 구성된 ApiKeyAuthenticationOptions
클래스가 있습니다. 귀하의 경우에는 유효한 클라이언트 ID가 필요할 것입니다. 당신이 정기적를 추가 할 수 있도록
귀하의 경우
[Authorize(Policy = "ApiKeyPolicy")]
, 당신은 클라이언트 ID 및 일반 인증을 모두 처리 할 수 있도록하려면 :
마지막으로, 당신은 정책이 필요한 [Authorize]
속성을 알려줄 필요 auth 스킴을 정책 빌더 표현식 (위의 첫 번째 스 니펫)에 추가하십시오.
커스텀 인증 대신 헤더 값에 의존하는 그 컨트롤러의 커스텀 라우팅을 할 수 있습니까? –
인증 된 사용자가 있는지를 확인하는 일종의 미들웨어로 수행 할 수 있습니다. 요청 경로가 MVC에 도달하기 전에 요청 경로를 변경합니다. 그러나 나는 여전히 프레임 워크 도구를 사용하는 대신 모든 프레임 워크 도구를 사용할 수 있으므로 접근 방법을 권장 할 것입니다. – juunas