2016-01-12 17 views
5

staramy się zaimplementować serwer oauth 2 i serwer api (oba są różnymi serwerami). (z wykorzystaniem nodejs dla wszystkich)wdrażanie własnego serwera oauth2 i serwera api

enter image description here

używamy https://github.com/FrankHassanabad/Oauth2orizeRecipes Kod autoryzacji płynąć

musimy napisać nowy validateToken funkcję serwera OAuth i po prostu hit go z boku API do uwierzytelnienia danego użytkownika tylko.

Zastanawiamy się nad utrzymaniem użytkowników i ról na stronie oauth, ale musimy sprawdzić je w interfejsie API przed udzieleniem odpowiedzi na api.

staramy się używać go do celów uwierzytelniania również dla cms i aplikacji mobilnej. jesteśmy na dobrej drodze lub niczego brakuje.

Odpowiedz

0

(I w obliczu podobnej sytuacji w .NET, więc w związku z tym)

Nie, jeśli używasz OAuth nie masz napisać nową metodę sprawdzania poprawności tokenu. Jak OAuthBearerAuthenticationProvider to zrobić za kulisami

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); 
         } 
        } 

      }); 

(jak na moje doświadczenia). Ale jeśli chcesz, nie ma opcji, aby skonfigurować Provider w pliku „Uruchomienie”:

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

      }); 

„CustomOAuthBearerProvider” dziedziczy interfejs „IOAuthBearerAuthenticationProvider”, który posiada predefiniowane podpis dla RequestToken() metoda, a metoda ta jest wywoływana przed każda walidacja dla tokena. Więc myślę, że możesz go użyć do niestandardowych operacji sprawdzania poprawności w tokenie, a następnie wysłać token do sprawdzania poprawności OAuth.

Powiązane problemy