Saya tidak mengerti cara kerja perpustakaan ini. Bisakah kamu membantuku ?
Ini kode sederhana saya:
public void TestJwtSecurityTokenHandler()
{
var stream =
"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(stream);
}
Ini adalah kesalahannya:
String harus dalam format JSON yang ringkas, dalam bentuk: Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL, Base64UrlEncodedSignature '.
Jika Anda menyalin aliran di situs web jwt.io , itu berfungsi dengan baik :)
Jawaban:
Saya menemukan solusinya, saya hanya lupa untuk Cast hasilnya:
Saya bisa mendapatkan Klaim menggunakan:
sumber
((List<Claim>)tokenS.Claims).ForEach(a => Console.WriteLine(a.Type.ToString() + " " + a.Value));
tokenJwtReponse.access_token
asalnya?new JwtSecurityTokenHandler().ReadToken("")
akan mengembalikanSecurityToken
new JwtSecurityTokenHandler().ReadJwtToken("")
akan mengembalikanJwtSecurityToken
Jika Anda hanya mengubah metode yang Anda gunakan, Anda dapat menghindari cast dalam jawaban di atas
sumber
Anda memerlukan string rahasia yang digunakan untuk menghasilkan token enkripsi. Kode ini berfungsi untuk saya:
sumber
handler.ReadToken(token) as SecurityToken
saat Anda menetapkannya kembali sebagaiout
parameter Anda nanti? Apakah ada kemungkinan yangValidateToken
gagal dan nilai aslinya disimpan?Menggunakan paket .net core jwt, Klaim tersedia:
sumber
Kemudian ekstrak konten
sumber
Memperluas jawaban cooxkie , dan dpix jawaban , saat Anda membaca token jwt (seperti access_token yang diterima dari AD FS), Anda dapat menggabungkan klaim dalam token jwt dengan klaim dari "context.AuthenticationTicket.Identity" yang mungkin tidak memiliki kumpulan klaim yang sama dengan token jwt.
Sebagai ilustrasi, dalam alur Kode Otentikasi menggunakan OpenID Connect, setelah pengguna diautentikasi, Anda dapat menangani peristiwa SecurityTokenValidated yang memberi Anda konteks otentikasi, lalu Anda dapat menggunakannya untuk membaca access_token sebagai token jwt, lalu Anda dapat " gabungkan "token yang ada di access_token dengan daftar standar klaim yang diterima sebagai bagian dari identitas pengguna:
sumber