System.IdentityModel.Tokens和Microsoft.IdentityModel.Tokens之间的冲突

编程入门 行业动态 更新时间:2024-10-21 22:59:28
本文介绍了System.IdentityModel.Tokens和Microsoft.IdentityModel.Tokens之间的冲突的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

使用System.IdentityModel.Tokens时发生冲突:

I have a conflict when using System.IdentityModel.Tokens :

using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Text; public voidGenereToken() { const string sec = "401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1"; var now = DateTime.UtcNow; var securityKey = new InMemorySymmetricSecurityKey(Encoding.Default.GetBytes(sec)); var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.RsaSha256Signature, SecurityAlgorithms.Sha256Digest); var header = new JwtHeader(signingCredentials); var payload = new JwtPayload { {"iss", "a5fgde64-e84d-485a-be51-56e293d09a69"}, {"scope", "example/ws"}, {"aud", "example/oauth2/v1"}, {"iat", now}, }; var secToken = new JwtSecurityToken(header, payload); var handler = new JwtSecurityTokenHandler(); var tokenString = handler.WriteToken(secToken); Console.writeLine(tokenString) }

创建标头时出现以下错误( var header = new JwtHeader(signingCredentials); ):

I get following error when I create header (var header = new JwtHeader(signingCredentials);) :

参数类型'System.IdentityModel.Tokens.SigningCredentials'不是 可分配给参数类型 "Microsoft.IdentityModel.Tokens.SigningCredentials"

Argument type 'System.IdentityModel.Tokens.SigningCredentials' is not assignable to parameter type 'Microsoft.IdentityModel.Tokens.SigningCredentials'

我不明白,因为我所有的类型都引用了 System.IdentityModel.Tokens . 并在文档 JwtHeader构造函数中需要 System.IdentityModel.Tokens.SigningCredentials

I don't understand because all my type refers to System.IdentityModel.Tokens. and in documentation JwtHeader Constructor need System.IdentityModel.Tokens.SigningCredentials

我不知道怎么了...

I don't know what's wrong ...

推荐答案

System.IdentityModel.Tokens.Jwt版本5.0.0.0取决于Microsoft.IdentityModel.Tokens.

System.IdentityModel.Tokens.Jwt version 5.0.0.0 depends on Microsoft.IdentityModel.Tokens.

您需要在Microsoft.IdentityModel.Tokens命名空间中使用SigningCredentials.

You need to use SigningCredentials in the Microsoft.IdentityModel.Tokens namespace.

示例:

using System; using System.IdentityModel.Tokens; using System.IdentityModel.Tokens.Jwt; using System.Text; public void voidGenereToken() { const string sec = "401b09eab3c013d4ca54922bb802bec8fd5318192b0a75f201d8b3727429090fb337591abd3e44453b954555b7a0812e1081c39b740293f765eae731f5a65ed1"; var now = DateTime.UtcNow; var securityKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.Default.GetBytes(sec)); var signingCredentials = new Microsoft.IdentityModel.Tokens.SigningCredentials( securityKey, SecurityAlgorithms.HmacSha256Signature); var header = new JwtHeader(signingCredentials); var payload = new JwtPayload { {"iss", "a5fgde64-e84d-485a-be51-56e293d09a69"}, {"scope", "example/ws"}, {"aud", "example/oauth2/v1"}, {"iat", now}, }; var secToken = new JwtSecurityToken(header, payload); var handler = new JwtSecurityTokenHandler(); var tokenString = handler.WriteToken(secToken); Console.WriteLine(tokenString); }

更多推荐

System.IdentityModel.Tokens和Microsoft.IdentityModel.Tokens之间的冲突

本文发布于:2023-11-13 00:14:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1582874.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:冲突   IdentityModel   System   Microsoft   Tokens

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!