Я запустил две среды разработки с помощью
dotnet watch run --urls=http://localhost:5001Команда .
Один экземпляр генерирует токен PASETO, другой его декодирует, экземпляр декодирования завершается с ошибкой «Неверный токен».
Я использовал следующий код с пакетом nuget paseto-dotnet.
using System.Text.Json;
using FluentResults;
using Paseto;
using Paseto.Builder;
using Paseto.Cryptography.Key;
public static class TokenUtils
{
readonly static PasetoSymmetricKey pasetoSymmetricKey = new PasetoBuilder()
.UseV4(Purpose.Local)
.WithSharedKey(Encoding.UTF8.GetBytes("DummySecret"))
.GenerateSymmetricKey();
public static string GenerateLocalToken(TokenPayload tokenPayload)
{
return new PasetoBuilder()
.UseV4(Purpose.Local)
.WithKey(pasetoSymmetricKey)
.AddClaim("UserId", tokenPayload.AppId)
.IssuedAt(DateTime.UtcNow)
.Expiration(tokenPayload.ExpiresAt)
.Encode();
}
public static Result DecodeLocalToken(string token)
{
try
{
PasetoTokenValidationResult decodedResult = new PasetoBuilder()
.UseV4(Purpose.Local)
.WithSharedKey(Encoding.UTF8.GetBytes("DummySecret"))
.WithKey(pasetoSymmetricKey)
.Decode(token);
if (decodedResult is null) { return Result.Fail("Failed to Decode Token"); }
if (!decodedResult.IsValid) { return Result.Fail("Invalid Token"); }
TokenPayload? tokenPayload = JsonSerializer.Deserialize(decodedResult.Paseto.RawPayload);
if (tokenPayload is null) { return Result.Fail("Failed to Deserialize TokenPayload"); }
return Result.Ok(tokenPayload);
}
catch (Exception exception)
{
return Result.Fail(exception.Message);
}
}
}
using System.Text.Json.Serialization;
public class TokenPayload
{
public string UserId { get; set; } = default!;
[JsonPropertyName("iat")]
public DateTime IssuedAt { get; set; } = default!;
[JsonPropertyName("exp")]
public DateTime ExpiresAt { get; set; } = default!;
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... otnet-nuge
Как создать согласованный PasetoSymmetricKey с пакетом nuget adavidesmet/paseto-dotnet? ⇐ C#
Место общения программистов C#
1715838704
Anonymous
Я запустил две среды разработки с помощью
dotnet watch run --urls=http://localhost:5001Команда .
Один экземпляр генерирует токен PASETO, другой его декодирует, экземпляр декодирования завершается с ошибкой «Неверный токен».
Я использовал следующий код с пакетом nuget paseto-dotnet.
using System.Text.Json;
using FluentResults;
using Paseto;
using Paseto.Builder;
using Paseto.Cryptography.Key;
public static class TokenUtils
{
readonly static PasetoSymmetricKey pasetoSymmetricKey = new PasetoBuilder()
.UseV4(Purpose.Local)
.WithSharedKey(Encoding.UTF8.GetBytes("DummySecret"))
.GenerateSymmetricKey();
public static string GenerateLocalToken(TokenPayload tokenPayload)
{
return new PasetoBuilder()
.UseV4(Purpose.Local)
.WithKey(pasetoSymmetricKey)
.AddClaim("UserId", tokenPayload.AppId)
.IssuedAt(DateTime.UtcNow)
.Expiration(tokenPayload.ExpiresAt)
.Encode();
}
public static Result DecodeLocalToken(string token)
{
try
{
PasetoTokenValidationResult decodedResult = new PasetoBuilder()
.UseV4(Purpose.Local)
.WithSharedKey(Encoding.UTF8.GetBytes("DummySecret"))
.WithKey(pasetoSymmetricKey)
.Decode(token);
if (decodedResult is null) { return Result.Fail("Failed to Decode Token"); }
if (!decodedResult.IsValid) { return Result.Fail("Invalid Token"); }
TokenPayload? tokenPayload = JsonSerializer.Deserialize(decodedResult.Paseto.RawPayload);
if (tokenPayload is null) { return Result.Fail("Failed to Deserialize TokenPayload"); }
return Result.Ok(tokenPayload);
}
catch (Exception exception)
{
return Result.Fail(exception.Message);
}
}
}
using System.Text.Json.Serialization;
public class TokenPayload
{
public string UserId { get; set; } = default!;
[JsonPropertyName("iat")]
public DateTime IssuedAt { get; set; } = default!;
[JsonPropertyName("exp")]
public DateTime ExpiresAt { get; set; } = default!;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78483269/how-to-create-consistent-pasetosymmetrickey-with-adaviddesmet-paseto-dotnet-nuge[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия