.net 코어 2.0에 액세스 할 수 있도록 클라이언트 응용 프로그램에 JSON 웹 토큰을 보내는 데 사용하려는 인증 시스템이 PHP에 설치되어 있습니다. api. 따라서 인증 서버는 사용자 자격 증명을 사용하고 자격 증명이 통과되면 openssl을 사용하여 만든 공용/개인 키 쌍을 사용하여 토큰을 생성합니다. 여기에 절차를 사용하여 토큰을 생성하고 있습니다 : http://www.phpbuilder.com/articles/application-architecture/security/using-a-json-web-token-in-php.html.net core 2.0의 무기명 오류 = "invalid_token"
jwt.io를 사용하여 결과 토큰을 디코드 할 수 있습니다.
{
"typ": "JWT",
"alg": "HS256"
}
{
"iss": "https://crm.advtis.com",
"exp": "2017-12-21 18:14:42",
"aud": "https://localhost:44354",
"data": {
"username": "[email protected]",
"role": 1
}
}
내가 토큰을 인코딩하는 데 사용 된 내 개인 키 파일에서 문자열을 입력 할 수 있으며 jwt.io는 서명이 유효 말한다 : 디코딩 된 버전은 다음과 같습니다.
이제 토큰을 내 API로 보내서 해당 리소스에 액세스하려고합니다. 로컬 서버에서 디버깅하는 동안 해당 리소스에 액세스 할 수 있습니다.
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<SmartRxDBContext>();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Audience = "https://localhost:44354/";
options.TokenValidationParameters = new TokenValidationParameters {
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidIssuer = "https://crm.advtis.com/",
IssuerSigningKey = new X509SecurityKey(new X509Certificate2("C:\\Path\\To\\webOrders-cert-AspNetPubkey.cert"))
};
});
services.AddMvc();
}
참조하는 경로가 나는 또한 JWT를 인코딩하는 데 사용되는 개인 키에서하려면 openssl을 사용하여 생성 된 PEM 형식의 공개 키에 있습니다 : 여기에 관련된 .NET 2.0 시작 코드입니다. .NET 코어 조각 인 JWT Validation and Authorization in ASP.NET Core 에 대해이 예제를 따르려고했지만 물론 모든 인증 미들웨어 구성이 2.0에서 ConfigureServices 메소드로 옮겨졌으며 더 이상 자동 인증 옵션이 없습니다.
모든 것이 잘되는 것처럼 보이지만 헤더가있는 요청을 할 때 Unauthorized Bearer 오류 = "invalid_token"오류가 발생합니다. Authorization: Bearer TOKEN
어쨌든 누군가가 나에게 내가 할 수있는 조언을 줄 수 있기를 바랍니다. 잘못 될 수 있으며 어떻게 문제를 해결할 수 있습니까?