Как извлечь и получить претензию из токена?

Я искал точный ответ, но кажется, что большинство ответов - это вызов клиента и выходящий за рамки.

Вопрос: У меня уже есть токен доступа. Как получить претензию, используя код C# только по токену доступа?

Я думаю: ниже приведены те же вопросы, но нет ответов, я думаю, что подходит.

Как получить претензии из аутентифицированного SecurityToken

Как мне прочитать заявления с моего токена Oauth?

2 ответа

Установочный пакет Newtonsoft.Json

Токен доступа - это просто JSON в кодировке base64. Вы можете проанализировать токен следующим образом

        string token =
            "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
        var parts = token.Split('.');
        var decoded = Convert.FromBase64String(parts[1]);
        var part = Encoding.UTF8.GetString(decoded);
        var jwt = JObject.Parse(part);
        var name = jwt["name"].Value<string>();

ОБНОВИТЬ

  1. Парсинг токена доступа на клиенте не рекомендуется, токен доступа должен анализироваться только на сервере ресурсов.
  2. Вы должны проверить токен доступа на сервере ресурсов, чтобы убедиться, что токен не был подделан в пути.
  3. Большую часть времени вам не нужно анализировать токен, как описано выше. Просто используйте рекомендованную библиотеку JWT, которая выполняет как проверку, так и анализ. например

    app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());

Rawel предоставил очень удобный образец! Одна небольшая проблема, с которой я столкнулся, заключалась в пространствах имен, которые мне пришлось использовать (просто для того, чтобы это было легче найти для следующего человека, поскольку я еще не могу публиковать комментарии):

      using System.Text;
using Newtonsoft.Json.Linq
Другие вопросы по тегам