2016-01-12 23 views
5

chúng tôi đang cố gắng triển khai máy chủ oauth 2 và máy chủ api (cả hai máy chủ khác nhau). (Sử dụng nodejs cho tất cả)triển khai máy chủ oauth2 và máy chủ api riêng

enter image description here

chúng tôi đang sử dụng https://github.com/FrankHassanabad/Oauth2orizeRecipes Authorization Mã chảy

sao chúng ta cần phải viết mới chức năng validateToken trong máy chủ oauth và chỉ cần nhấn nó từ bên api để xác thực người dùng chỉ có.

chúng tôi đang nghĩ đến việc giữ người dùng và vai trò ở phía oauth nhưng chúng tôi cần kiểm tra chúng ở phía api trước khi trả lời cuộc gọi api.

chúng tôi đang cố gắng sử dụng nó cho mục đích xác thực cũng như cho các cm và ứng dụng dành cho thiết bị di động. chúng ta đang đi đúng hướng hay thiếu bất cứ thứ gì.

Trả lời

0

(Tôi phải đối mặt với tình huống tương tự trong Net, vì vậy trong bối cảnh đó)

Không, nếu bạn đang sử dụng OAuth bạn không phải viết Validate phương pháp mã mới. Như OAuthBearerAuthenticationProvider làm điều này đằng sau hậu trường

app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { audience }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
       { 
        new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret) 
       }, 
       Provider = new OAuthBearerAuthenticationProvider 
        { 
         OnValidateIdentity = context => 
         { 
          context.Ticket.Identity.AddClaim(new System.Security.Claims.Claim("newCustomClaim", "newValue")); 
          return Task.FromResult<object>(null); 
         } 
        } 

      }); 

(theo kinh nghiệm của tôi). Nhưng nếu bạn muốn, có tùy chọn để cấu hình nhà cung cấp trong bạn "khởi động" file:

app.UseJwtBearerAuthentication(
      new JwtBearerAuthenticationOptions 
      { 
       AuthenticationMode = AuthenticationMode.Active, 
       AllowedAudiences = new[] { audience }, 
       IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[] 
       { 
        new SymmetricKeyIssuerSecurityTokenProvider(issuer, secret) 
       }, 
       Provider = new CustomOAuthBearerProvider()       

      }); 

"CustomOAuthBearerProvider" kế thừa "IOAuthBearerAuthenticationProvider" giao diện mà đã xác định trước chữ ký cho phương pháp RequestToken(), và phương pháp này được gọi là trước bất kỳ xác thực nào cho mã thông báo. Vì vậy, tôi nghĩ bạn có thể sử dụng nó cho các hoạt động xác thực tùy chỉnh của bạn trên Mã thông báo và sau đó gửi mã thông báo để xác thực OAuth.

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