2015-02-15 2 views
0

Я разрабатываю приложение для веб-приложений, мобильных приложений и настольных приложений, которые могут получить доступ к данным с помощью единого API, который может быть разработан веб-API ASP.NET.Можем ли мы использовать OAuth для аутентификации потребителей в моем веб-API?

В моем веб-интерфейсе API можно аутентифицировать учетные данные пользователя и пользовательский ключ приложения с помощью OAuth? Можете ли вы, ребята, руководить мной, чтобы добиться того же с любыми примерами?

ответ

1

Добавьте следующие строки в классе запуска

public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 

      var oauthProvider = new OAuthAuthorizationServerProvider 
      { 
       OnGrantResourceOwnerCredentials = async context => 
       { 
        IsValid = true; 
//You can get the username and password by context.username and context.password 
        if (IsValid) 
        { 
         var claimsIdentity = new ClaimsIdentity(context.Options.AuthenticationType); 
         claimsIdentity.AddClaim(new Claim("user", context.UserName)); 
         context.Validated(claimsIdentity); 

         return; 
        } 
        context.Rejected(); 
       }, 
       OnValidateClientAuthentication = async context => 
       { 
        string clientId; 
        string clientSecret; 
        if (context.TryGetBasicCredentials(out clientId, out clientSecret)) 
        { 
         if (clientId == GlobalAppSettings.SystemSettings.ApplicationKey) 
         { 
          context.Validated(); 
         } 
        } 
       } 
      }; 
      var oauthOptions = new OAuthAuthorizationServerOptions 
      { 
       AllowInsecureHttp = true, 
       TokenEndpointPath = new PathString("/accesstoken"), 
       Provider = oauthProvider, 
       AuthorizationCodeExpireTimeSpan = TimeSpan.FromMinutes(1), 
       AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(3), 
       SystemClock = new SystemClock() 

      }; 
      app.UseOAuthAuthorizationServer(oauthOptions); 

      app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); 

      var config = new HttpConfiguration(); 
      config.MapHttpAttributeRoutes(); 
      app.UseWebApi(config); 
     } 

    } 

И вызовите метод запуска, запуска нового OAuth APP, из которого вам нужно разрешение и OAuth маркер

Вы можете использовать свой собственный хост по используя пространство имен хостинга. В противном случае вы можете использовать пространство имен Microsoft.Owin.Host.HttpListener и разместить приложение OAuth на другом хосте, как показано ниже:

var Basesite = "http://localhost:9327/"; 
      var homeProcessorModel = new HomeProcessorModel(); 
      using (WebApp.Start<Startup>(url: Basesite)) 
      { 
       var client = new HttpClient(); 
        var form = new Dictionary<string, string> 
        { 
         {"grant_type","password"}, 
         {"userName",username}, 
         {"passWord",password} 
        };//If you are using grant_type as password, you have to send the username and password to OAuth protocol. 
       var tokenResponse = client.PostAsync(Basesite + "accesstoken", new FormUrlEncodedContent(form)).Result; 
       var token = tokenResponse.Content.ReadAsAsync<Token>(new[] { new JsonMediaTypeFormatter() }).Result; 
       //You can get the token with token.AccessToken object 
      } 
Смежные вопросы