2014-09-25 4 views
2

Как я могу узнать, оба они? Есть ли разница?OAuth in asp.net Проекты MVC

var OAuthOptions = new OAuthAuthorizationServerOptions 
{ 
    TokenEndpointPath = new PathString("/Token"), 
    AuthorizeEndpointPath = new PathString("/Account/Authorize"), 
    Provider = new SimpleAuthorizationServerProvider(UserRepository, UserStore), 
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(14), 
    AllowInsecureHttp = true 
}; 
app.UseOAuthBearerTokens(OAuthOptions); 

и

app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions 
{ 
    AllowInsecureHttp = true, 

    TokenEndpointPath = new PathString("/token"), 
    AccessTokenExpireTimeSpan = TimeSpan.FromHours(8), 

    Provider = new SimpleAuthorizationServerProvider(UserRepository, UserStore) 
}); 
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 

Как прийти в метод UseOAuthBearerTokens принимает OAuthAuthorizationServerOptions в качестве параметра?

+2

Хорошего вопроса. Я не знаю, это только я, но я думаю, что полная часть авторизации/аутентификации/OAuth текущего состояния ASP.NET является абсолютным беспорядком. – Tobias

+0

Люди рекомендуют использовать что-то еще? – Gillardo

ответ

2

Я считаю, что первый, UseOAuthBearerTokens (параметры), был добавлен в Web API 2.1, и он инкапсулирует вызов UseOAuthAuthorizationServer и UseOAuthBearerAuthentication.

К сожалению, многие образцы в статьях/блогах в Интернете не включают дату публикации, поэтому трудно определить, применим ли этот код. И учитывая скорость, с которой эти API-интерфейсы обновляются, я не думаю, что она станет менее запутанной.

Вот код из Owin.AppBuilderExtensions.cs, найденного в пакетах Microsoft.Owin.Security, для справки, так как вебы-Апите v2.2:

public static void UseOAuthBearerTokens(this IAppBuilder app, OAuthAuthorizationServerOptions options) 
     { 
      if (app == null) 
      { 
       throw new ArgumentNullException("app"); 
      } 
      if (options == null) 
      { 
       throw new ArgumentNullException("options"); 
      } 

      app.UseOAuthAuthorizationServer(options); 

      app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions 
      { 
       AccessTokenFormat = options.AccessTokenFormat, 
       AccessTokenProvider = options.AccessTokenProvider, 
       AuthenticationMode = options.AuthenticationMode, 
       AuthenticationType = options.AuthenticationType, 
       Description = options.Description, 
       Provider = new ApplicationOAuthBearerProvider(), 
       SystemClock = options.SystemClock 
      }); 

      app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions 
      { 
       AccessTokenFormat = options.AccessTokenFormat, 
       AccessTokenProvider = options.AccessTokenProvider, 
       AuthenticationMode = AuthenticationMode.Passive, 
       AuthenticationType = DefaultAuthenticationTypes.ExternalBearer, 
       Description = options.Description, 
       Provider = new ExternalOAuthBearerProvider(), 
       SystemClock = options.SystemClock 
      }); 
     }