Skip to content

WebApiTreinoGO!

Daniel edited this page Mar 31, 2018 · 3 revisions

Essa é uma pequena aplicação do Tipo Web API, que incorpora as tecnologia RESTFul e autenticação Bearer Token.

Vamos direto ao ponto!

Para que server essa aplicação?

Com ela é possível subir um serviço, que proverá conexão com diversas aplicações Web a um back-office corporativo. Meu objetivo foi desenvolver uma aplicação de sustentação ao Web API com autenticação via Bearer Token, para funcionar de camada intermediária ao TOTVS Protheus, mas que pode ser utilizada com outras aplicações ou de forma independente.

Qual é o pulo do Gato?

É fazer o TOKEN funcionar de forma correta e sem gambiarras. Para isso vamos ter que criar duas classes e instalar alguns frameworks.

No VS (Visual Estúdio) crie um novo projeto do tipo Web Api, sem autenticação. Após a criação do projeto a primeira coisa a se fazer, é atualizar os pacotes defauts já instalados através do Nuget Package Manager, feito isso instale os pacotes abaixo:

  • Install-Package Microsoft.AspNet.WebApi.Owin
  • Install-Package Microsoft.Owin.Host.SystemWeb
  • Install-Package Microsoft.Owin.Security.OAuth
  • Install-Package Microsoft.Owin.Cors

Como configurar o Startup.Auth.cs

Startup.Auth.cs

Como configurar o Provider

ProviderToken.cs

Como Startup.Auth.cs e o Provider se conversam?

Quando o app sobe, o primeiro lugar por onde ele vai passar é pelo WebApiConfig.cs. Aqui será montado a rota para o Api/{Controller}/id, logo todo o controller que você criar e estender a classe ApiController se tornará uma parte da API, exemplo: ValuesController.cs

O que temos que fazer é resgatar a configuração do WebApi, através do HttpConfiguration em nossa classe Startup.Auth.cs, após isso configurar e habilitar o Token, dentro da API.

Para habilitar o Token, vamos precisar de um OAuthAuthorizationServerOptions e dentro dele vamos falar que é que vai providenciar o Token, ou seja, quem é o nosso Provider.

Basicamente assim:

`

        //Habilita o Cors
        app.UseCors(CorsOptions.AllowAll);
        
        //Resgata a Configuração do WebApi
        HttpConfiguration config = new HttpConfiguration();

        //Faz a configuração da Aplicação com o Token 
        ConfigureToken(app);

        //Configurações Extras ao app
        ConfigureOAuth(app);

        //Habilita o WebAPi
        app.UseWebApi(config);`

Dentro do ConfigureToken() fazemos a configuração do Token, de tal forma que fique como abaixo:

`

    /// <summary>
    /// Configures the token.
    /// </summary>
    /// <param name="app">The application.</param>
    public void ConfigureToken(IAppBuilder app)
    {
        OAuthOptions = new OAuthAuthorizationServerOptions();

        //Configuração
        OAuthOptions.AllowInsecureHttp = true;
        OAuthOptions.TokenEndpointPath = new PathString("/Token");
        OAuthOptions.AccessTokenExpireTimeSpan = TimeSpan.FromHours(1);
        OAuthOptions.Provider = new ProviderToken(); //Provider da aplicação 
        
        
        //Ativação
        app.UseOAuthAuthorizationServer(OAuthOptions);
        
        // Enable the application to use bearer tokens to authenticate users
        app.UseOAuthBearerTokens(OAuthOptions);

        //Ativa o Bearer Token 
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());            
    }`

Feito tudo isso, é a hora de configurar o provider. É nele que faremos a leitura do request e aceitaremos a conexão ou não. Nesse ponto é o momento que podemos validar o usuário e senha se ele existe ou não, para retornar o Token

Próximos passo? Configurar um framework ORM