2017-12-29 47 views
1

컨트롤러가 Authorize 특성으로 보호되어 있습니다. 내가하고 싶은 일은 Authorize 속성에 Windows 스키마를 사용하도록하거나 스키마를 전혀 사용하지 않도록 지시하는 것입니다. 나는 그것을 어떻게 성취 할 것인가?.txt 파일에서 Authorize 특성에 대한 체계를 설정하는 방법은 무엇입니까?

[Authorize(AuthenticationSchemes = AuthSchemes)] 
  1. 케이스 : AuthSchemes = "윈도우"
  2. 케이스 : AuthSchemes = ""

내가 런타임 동안 스키마를 변경하려면, 그래서 관리자가 변경할 수 있습니다 인증 설정.

답변

0

내가 오랫동안 알아 낸 결과, 나는이 일을 할 수 있었지만 그렇게 우아한 방식은 아니었다.

내가 Authorize 특성을 사용하지 않기로 결정한 대신 사용자 지정 인증 프로세스를 만들기로 결정했습니다. 그래서 기본적으로 나는이와 Migrating authentication middleware to ASP.NET CORE 2.0.

이 설정이 리소스 다음, 사용자 정의 인증 과정을 ASP.NET의 CORE 2.0 인증 미들웨어를 마이그레이션, 나는 .json 파일에서 읽을 때 사용하는 간단한 클래스를 만든 :

public class AuthenticationSettings 
{ 
    public string AuthenticatonScheme { get; set; } 
    public bool Enabled { get; set; } 
} 

또한 응용 프로그램이 Windows 인증을 사용해야하는 날씨에 대한 정보가 들어있는 .json 파일을 만들었습니다. 파일 읽기는 ConfigureServices() 메소드의 Startup 클래스에서 발생합니다. windows가 true로 설정된 경우 우리는 현재 설정되어있는 구성표를 사용하여 사용자 지정 정책을 만들고이 정책을 전역 적으로 적용합니다.

services.AddAuthorization(o => // we create policy with our custom sheme 
{ 
    o.AddPolicy("WinPolicy", b => 
    { 
     b.RequireAuthenticatedUser(); 
     b.AuthenticationSchemes = new List<string> { auth_settings.AuthenticatonScheme }; // here we set the windows scheme 
    }); 
}); 
services.AddMvc(o => 
{ 
     o.Conventions.Add(new AddAuthorizeFiltersControllerConvention()); // we apply the policy 
});