在 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/

10-09 23:10