在 ASP.NETv4 中,我使用了:
var signingKey = new HmacSigningCredentials(keyByteArray);
但是在 v5 中
new JwtSecurityToken()
的最后一个参数是 SigningCredentials
,而不是 HmacSigningCredentials
。所以我尝试使用:
var signingKey = new System.IdentityModel.Tokens.SigningCredentials();
但这给了我错误
The type SigningCredentials exists in both System.IdentityModel.Tokens and System.IdentityModel
我该如何解决?
这些是我的依赖项:
"dependencies": {
"EntityFramework.Commands": "7.0.0-beta8",
"EntityFramework.SqlServer": "7.0.0-beta8",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta8",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta8",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta8",
"Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8",
"Microsoft.AspNet.Mvc": "6.0.0-beta8",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta8",
"Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta8",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta8",
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta8",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta8",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta8",
"Microsoft.Framework.Logging": "1.0.0-beta8",
"Microsoft.Framework.Logging.Console": "1.0.0-beta8",
"Microsoft.Framework.Logging.Debug": "1.0.0-beta8",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta8",
"Thinktecture.IdentityModel.Core": "1.4.0",
"Microsoft.Owin.Security": "3.0.1",
"System.IdentityModel.Tokens.Jwt": "5.0.0-beta8-209291029",
"Microsoft.AspNet.Identity.Owin": "2.2.1"
},
据我所知,冲突在于这些依赖项之间:
"Microsoft.AspNet.Identity.Owin": "2.2.1"
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta8"
如果我删除 Entity Framework 之一,那么我会丢失
public class User : IdentityUser
之类的东西,如果我删除 Owin 一个,那么我会丢失 OAuthAuthorizationServerProvider
之类的东西。我好像被卡住了。
最佳答案
您看到的问题直接是由于您同时引用了 ASP.NET Identity 2 和 Identity 3 包:Identity 2 引用 IdentityModel 4(随完整的 .NET 框架提供),而新堆栈使用 IdentityModel 5。遗憾的是,两者不兼容,不能在同一个项目中引用。
您可以在此处找到更多信息:Ambiguous reference issue (Microsoft.AspNet.Identity & Microsoft.AspNet.Identity.Core)
删除您的 Microsoft.AspNet.Identity.Owin
/Microsoft.Owin.Security
引用,它应该可以工作。
如果您需要可与 ASP.NET 5 一起使用的 OAuthAuthorizationServerMiddleware
的替代方案,您可以查看另一个 SO 问题:Configure the authorization server endpoint
关于ASP.NET v5 多重签名证书,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33524030/