현재 웹 클라이언트 용 기능을 제공하는 MainAPI와 모든 인증 요청을 처리하는 AuthAPI가 있으며 두 가지 프로젝트가 있습니다. netcore 2.NetCore 2를 사용하는 JWT 원격 인증에서 오류가 발생했습니다.
AuthAPI를 직접 호출하면 원하는대로 요청을 처리합니다.
MainAPI 요청을 AuthAPI에서 인증하려고 시도 할 때 AuthAPI 안팎으로 들어오는 요청을 볼 수 있지만 그렇게하지 못합니다.
public class BackChannelHttpHandler : HttpMessageHandler
{
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
HttpClient client = new HttpClient(new HttpClientHandler(), disposeHandler: false);
client.DefaultRequestHeaders.Add("Accept", "application/json");
var res = await client.GetAsync(request.RequestUri);
return res;
}
}
다음과 같이 내가 권한을 부여 주석으로 부르고 컨트롤러 :
여기services.AddAuthentication(option =>
option.DefaultAuthenticateScheme = "Bearer")
.AddJwtBearer(options =>
{
options.MetadataAddress = "http://localhost:5019/auth/api/info";
options.Authority = "http://localhost:5019";
options.Audience = AUDIENCE;
options.RequireHttpsMetadata = false;
options.SaveToken = true;
options.BackchannelHttpHandler = new BackChannelHttpHandler();
options.IncludeErrorDetails = true;
});
이 BackChannelHttpHandler 클래스 :
여기 는 MainAPI Startup.cs 내 서비스 인증 구성입니다[Authorize(AuthenticationSchemes = "Bearer")]
AuthAPI는 Startu에서 Cors를 구성했습니다. p.cs :
services.AddCors(options =>
{
options.AddPolicy("CorsConfig",
builder => builder
.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
.Build());
});
AuthAPI 컨트롤러에는 [EnableCors("CorsConfig")]
Annotation도 있습니다.
AuthAPI 컨트롤러에 대한 호출을 얻을 수 있으며 HTTP-200을 반환하지만 MainAPI에서 인증 프로세스의 무언가가 호출되면 Unauthorizes가 발생하고 MainAPI 컨트롤러에 대한 호출이 실행되지 않습니다.
내 questio는 MainAPI 인증 프로세스에서 내가 뭘 잘못하고, 자체적으로 토큰을 인증하며 요청을 무효화합니다.
MainAPI 서버에서 AuthAPI에 전화 하시겠습니까? 통화는 어떻게 생겼습니까? –