Подтвердить что ты не робот

Как я могу проверить свой токен доступа Oauth2 на стороне сервера

public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        bool isvalidUser = AuthenticateUser(context.UserName, context.Password);// validate my user&password
        if (!isvalidUser)
        {
            context.Rejected();
            return;
        }
        // create identity
        var id = new ClaimsIdentity(context.Options.AuthenticationType);
        id.AddClaim(new Claim("sub", context.UserName));
        id.AddClaim(new Claim("role", "user"));

        // create metadata to pass on to refresh token provider
        var props = new AuthenticationProperties(new Dictionary<string, string>
            {
                { "as:client_id", context.ClientId }
            });

        var ticket = new AuthenticationTicket(id, props);
        context.Validated(ticket);
    }
}

Время входа в систему Я использую этот SimpleAuthorizationServerProvider (в Web Api). Я могу получить и отправить токен доступа клиенту.   Снова Логин пользователя должен получить доступ к другим страницам, как я могу проверить свой пользовательский маркер доступа Oauth2 на стороне сервера (в Web Api)

С клиентской стороны я использую токен вроде этого

private static TokenResponse GetToken()
{
    var client = new OAuth2Client(new Uri("http://localhost:1142/token"), "client1", "secret");
    var response = client.RequestResourceOwnerPasswordAsync(uid, pwd).Result;
    Console.WriteLine(response.AccessToken);
    return response;
}

И вызовите конкретный веб-api после аутентификации, как этот

private static void CallProfile(string token)
{
    var client = new HttpClient();
    client.SetBearerToken(token);
    var response = client.GetStringAsync(new Uri("http://localhost:1142/api/Profile?id=1")).Result;
}
4b9b3361

Ответ 1

Собственно, OWIN обрабатывает почти все для вас. Если вы используете ASP.NET API v2 Server для получения запросов. Вам просто нужно передать свой токен в ваших http-запросах в правильном формате.

1. Отправить http-запрос

Есть два способа передать токен:

2. Аутентификация вашего запроса

Вы можете использовать (ClaimsPrincipal)Thread.CurrentPrincipal.Identity.IsAuthenticated для проверки правильности requested token

3. Авторизовать свой запрос

Вы можете использовать атрибут [Authorize] или вы можете написать свой собственный AuthorizeAttribute

Если вы реализуете свой собственный атрибут, вы можете делать более интересные вещи: подключиться к базе данных для выполнения сложной авторизации.

Я думаю, что это хороший документ для начала с OAUTH2 в ASP.NET Web Api: http://bitoftech.net/2014/06/01/token-based-authentication-asp-net-web-api-2-owin-asp-net-identity/