2016-11-16 24 views
5

Tôi đang tạo mẫu sử dụng IdentityServer4 để bảo mật một số dịch vụ, với thông báo trước rằng các dịch vụ đó có thể sẽ không được di chuyển (trong tương lai gần) để sử dụng thành phần trung gian OWIN của ASP.NET Core. Do đó, tôi không thể tận dụng nhiều trình trợ giúp phần mềm trung gian để tự động hóa xác nhận của JWT bằng cách cung cấp điểm cuối JWKS nổi tiếng của IdentityServer, trong số những thứ khác.Làm cách nào để xác thực JWT bằng JwtSecurityTokenHandler và điểm cuối JWKS?

Sẽ thật tuyệt nếu tôi có thể tái tạo lại hành vi này và tôi muốn tận dụng triển khai JwtSecurityTokenHandler của Microsoft nếu có thể. Tuy nhiên, tôi không thể tìm ra cách sử dụng các loại JsonWebKeySetJsonWebKey được cung cấp qua điểm cuối khám phá của IdentityServer để trích xuất khóa và thực hiện xác thực.

JwtSecurityTokenHandler sử dụng TokenValidationParameters để xác thực JWT và các thông số đó yêu cầu một phiên bản của một hoặc nhiều đối tượng để thực hiện xác thực.

ClaimsPrincipal ValidateJwt(string token, IdentityModel.Client.DiscoveryResponse discovery) 
{ 
    JwtSecurityToken jwt = new JwtSecurityToken(token); 

    TokenValidationParameters validationParameters = new TokenValidationParameters 
    { 
     ValidateAudience = true, 
     ValidateIssuer = true, 
     RequireSignedTokens = true, 
     ValidIssuer = "expected-issuer", 
     ValidAudience = "expected-audience", 
     IssuerSigningKeys = discovery.KeySet.Keys /* not quite */ 
    }; 

    JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler(); 
    SecurityToken validatedToken; 
    return handler.ValidateToken(jwt, validationParameters, out validatedToken); 
} 

Làm cách nào để thực hiện bản dịch cần thiết từ JsonWebKeySet đến IEnumerable<SecurityKey> để xác thực có thể xảy ra? Có phương pháp nào khác (ngoài phần mềm trung gian OWIN) cũng sẽ hoạt động bằng cách sử dụng dữ liệu DiscoveryResponse ở trên không?

(Đáng buồn thay, các tài liệu hướng dẫn cho System.IdentityModel.Tokens.Jwt không được cập nhật.)

Trả lời

Các vấn đề liên quan