사용자가 인증되면 응답 인증 헤더에 서명 된 토큰을 넣습니다.편안한 웹 API에서 후속 요청에 대한 토큰 서명 유효성 검사
ressource URL에 대한 모든 액세스는 유효한 서명 된 토큰과 함께 허용됩니다.
나는 토큰을 생성하고이를 valdiate 경우 :
var principal = tokenHandler.ValidateToken(tokenString, validationParameters);
는 내가 교장 서명 키가 토큰을 생성하여 사용
을 가지고있는 동일한 경우 (요청을 만든 사용자)를 얻을 .
나는이 클래스 생성 한 토큰의 유효성을 검사 인증 후와 ressource 요청시 동일한 서명 키를 사용할 수 있습니다 : 나는 정적 클래스에서이 코드를 넣어 아무 잘못이
public static class ApiConstants
{
private static readonly RNGCryptoServiceProvider CryptoProvider = new RNGCryptoServiceProvider(new byte[33]);
private static byte[] key = new byte[32];
static ApiConstants()
{
CryptoProvider.GetBytes(key);
}
public static byte[] GetSignedKey()
{
return key;
}
}
거기를하는 실제로 한 번만 발생하는 임의의 숫자로 바이트 배열 채우기를 원하는대로 실제로 내 전체 목적입니다!
개선할만한 것이 있습니까?
문제는 토큰을 생성하고 토큰의 유효성을 검사하는 시간이 하나의 요청 내에 있지 않기 때문에 유효하지 않은 토큰을 만들 때 validateToken과 동일한 비밀 키를 사용하는 방법은 무엇일까요? 내 http API에서 REST 원칙을 따르기 때문에 서버 측에서 세션/쿠키를 사용하지 않습니다. – HelloWorld
아마도 비밀 키 생성을 인터페이스에 넣고 autoface를 통해 공유 싱글 톤인 .SingleInstance를 삽입해야 할 수도 있습니다. – HelloWorld
생성 된 토큰을 모든 요청에 공유 할 수 있으면 클래스를 정적으로 설정하는 것이 좋습니다. 모든 사용자/요청에 대해 한 번 생성 된 토큰이 될 것이라고 말합니다. –