OAuth 2 - учетные данные клиента типа предоставления, сохраняйте тот же токен доступа до 1 дня - PullRequest
0 голосов
/ 13 октября 2018

Я использую OAuth2, тип предоставления "учетные данные клиента" в WEB API C #.

Здесь я хочу сохранить одинаковый access_token для всех запросов , и он изменится через 1 день

AccessTokenExpireTimeSpan = TimeSpan.FromDays(1)

Я реализовал логику, но для каждого запроса я получаю новый access_token.

    public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        string clientId;
        string clientSecret;
        context.TryGetFormCredentials(out clientId, out clientSecret);

        if (clientId == "1234" && clientSecret == "12345")
        {
            context.Validated(clientId);
        }

        return base.ValidateClientAuthentication(context);
    }


    public override Task GrantClientCredentials(OAuthGrantClientCredentialsContext context)
    {
        var client = new ClientService { clientId = "1234", clientSecret = "12345", ClientName = "test" };

        var oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);

        var props = new AuthenticationProperties(new Dictionary<string, string>
                {
                    {
                        "ExtraInfo", "This is extra info"
                    }
                });

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

        return base.GrantClientCredentials(context);
    }

    public override Task TokenEndpoint(OAuthTokenEndpointContext context)
    {
        foreach (KeyValuePair<string, string> property in context.Properties.Dictionary)
        {
            context.AdditionalResponseParameters.Add(property.Key, property.Value);
        }

        return Task.FromResult<object>(null);
    }

Ответ 1:

{
"access_token": "6k91AY7FHxGDZYh5ShDkPj04pzYWacQdE58ZB2CVcxsPMK85txtbLhdanSAprkAHmwQeVYQEe-ifBiy5T0S-Y9BcX1oZqyx_2wqYHYB3xJDcCLl2KHSLxOqLGURBP6NmwhlpPiHrLsRMaNvvOTqGAWt0bdAMrmHfsNKoACH6k6e5ovPEo1zrZDhgiv74JBh0tXgw74zdH3SriQucvZEgwtw3vhb19X3sitA9IFzu5Q8",
"token_type": "bearer",
"expires_in": 86399,
"ExtraInfo": "This is extra info",
".issued": "Sat, 13 Oct 2018 14:55:33 GMT",
".expires": "Sun, 14 Oct 2018 14:55:33 GMT"                                 
}

Ответ2:

{
"access_token": "nSvKMwTs_VyoOIzRZ4FfGBzMYN_eq1utt0RE-Md9aYvFjV9-x95_3E9CRpW8_Mr-sJ-Cidiq03fJ0JV7ZHI3arwMJ0WGmpG3gSyxZE_vaYSkG-sUrOLZ2dx9vh1n1P-9rq4BJUWUKLICDtkd8P7CEun9EwX0g2r0ZkhGrvmifOLOiPbUdBob85H7dtHndm2GKHj3LSw_ePO6WQcCwDDWYJsEmaAXLo8et2IfzoOjp3o",
"token_type": "bearer",
"expires_in": 86399,
"ExtraInfo": "This is extra info",
".issued": "Sat, 13 Oct 2018 15:00:20 GMT",
".expires": "Sun, 14 Oct 2018 15:00:20 GMT"                                 
}

В обоих ответах access_token различен, но я хочу один и тот же токен доступа.

Есть ли способ, которым я могу получить тот же access_token для всех запросов

Примечание. Я использую Почтальон для проверки ответа

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...