Как использовать токен на предъявителя с двумя веб-API asp.net

У меня есть два проекта, оба из них asp.net веб-API

с одним из веб-API у меня есть функциональность для создания токена на предъявителя

Веб-интерфейс 1:

Файл Startup.Auth.cs:

    public void ConfigureAuth(IAppBuilder app)
    {
        OAuthOptions = new OAuthAuthorizationServerOptions();

        // Enable the application to use bearer tokens to authenticate users
        app.UseOAuthBearerTokens(OAuthOptions);
    }

и для создания нового токена я использую эту функцию:

      public static string CreateTokenForAuthUser(string username ,string role)
      {

        AuthList authlist = new AuthList();
        var identity = new ClaimsIdentity(Startup.OAuthOptions.AuthenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Name, username));
        identity.AddClaim(new Claim(ClaimTypes.Role, "SomeRule"));

        var ticket = new AuthenticationTicket(identity, new AuthenticationProperties());
        var currentUtc = new SystemClock().UtcNow;
        ticket.Properties.IssuedUtc = currentUtc;
        ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromMinutes(30));

        string token = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);

        return token;

      }

все работает нормально, чтобы создать токен на предъявителя и использовать его на этом веб-API

Я хотел бы знать, как я могу использовать тот же токен на предъявителя, который был создан на веб-API 1 с другим веб-API Asp.net, что у меня есть для использования тех же правил авторизации на контроллерах (при условии, что они имеют одинаковую функциональность)

Спасибо!

1 ответ

Это помогает

var client = new RestClient("http://yourhost/token");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddHeader("cache-control", "no-cache");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=password&username=usernameEndcode&password=passwordEncodeValue", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

ОБНОВИТЬ

После получения токена вы можете использовать его следующим образом

var token = response.accessToken; //not sure accessToken is corrected here but you can easy debug to get correct property
var client = new RestClient("http://localhost:62301/api/values");
var request = new RestRequest(Method.GET);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "Bearer " + token);
request.AddParameter("undefined", "{\n   \n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Другие вопросы по тегам