Регенерировать токен-носитель JWT при каждом запросе API - PullRequest
1 голос
/ 26 марта 2019

Я хочу регенерировать свой токен на предъявителя при каждом обращении к серверу.

Я не хочу использовать токен обновления для этой цели.

Может кто-нибудь посоветовать, как я могу регенерировать новый токен с новым штампом истечения срока действия из ранее созданного токена, который проходит череззаголовок авторизации?

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Я создал фильтр MessageHandler, унаследованный от класса DelegatingHandler, и переписал метод SendAsync.

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

        string audienceId = Properties.Settings.Default.AudienceId;
        var issuer = Properties.Settings.Default.AngularHostURL;
        string symmetricKeyAsBase64 = Properties.Settings.Default.AudienceSecret;

        DateTime IssuedUtc = DateTime.UtcNow;
        DateTime ExpiresUtc = 
        IssuedUtc.AddMinutes(Properties.Settings.Default.TokenLifetimeInMinutes);
        var keyByteArray = TextEncodings.Base64Url.Decode(symmetricKeyAsBase64);
        var signingKey = new HmacSigningCredentials(keyByteArray);

        var identity = new ClaimsIdentity("JWT");

        foreach (var claim in claims)
            identity.AddClaim(claim);

        var tokennew = new JwtSecurityToken(issuer, audienceId, identity.Claims, 
        IssuedUtc, ExpiresUtc, signingKey);
        var handler = new JwtSecurityTokenHandler();
        var jwt = handler.WriteToken(tokennew);

        return jwt;
0 голосов
/ 26 марта 2019

Вызывайте конечную точку токена Сервера авторизации каждый раз перед отправкой запроса API.

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