[英]IdentityServer4 and ASP.NET Core 2.0
I must be missing something but I cannot see it. 我必须丢失一些东西,但看不到它。
I have created a new 'empty' ASP.NET Core 2.0 Project 我创建了一个新的“空” ASP.NET Core 2.0项目
I added EF Core 2.0 and EF Core 2.0 Identity 我添加了EF Core 2.0和EF Core 2.0 Identity
I then try to add IdentityServer4 2.0 rc1 and I get a package restore failure with the following error message: 然后,我尝试添加IdentityServer4 2.0 rc1,并由于以下错误消息而导致程序包还原失败:
Error occurred while restoring NuGet packages: Sequence contains more than one matching element 恢复NuGet软件包时发生错误:序列包含多个匹配元素
There is no code in this project so I am completely confused. 这个项目中没有代码,所以我很困惑。
Here is the csproj file: 这是csproj文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="IdentityServer4" Version="2.0.0-rc1-update1" />
<PackageReference Include="IdentityServer4.AspNetIdentity" Version="2.0.0-rc1" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.0" />
<PackageReference Include="NETStandard.Library" Version="2.0.0" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
</ItemGroup>
</Project>
Here is my call to NuGet.org from the Package Manager Console: 这是我从程序包管理器控制台对NuGet.org的呼叫:
PM> Install-Package IdentityServer4.AspNetIdentity -Version 2.0.0-rc1 -Prerelease GET https://api.nuget.org/v3/registration3-gz-semver2/identityserver4.aspnetidentity/index.json OK https://api.nuget.org/v3/registration3-gz-semver2/identityserver4.aspnetidentity/index.json 484ms Restoring packages for D:\\ProtoTypes\\IdentityServer4\\IdentityServer4\\IdentityServer4.csproj... Install-Package : Sequence contains more than one matching element At line:1 char:1 + Install-Package IdentityServer4.AspNetIdentity -Version 2.0.0-rc1 -Pr ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Install-Package], Exception + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand Time Elapsed: 00:00:03.7728514 PM> PM>安装软件包IdentityServer4.AspNetIdentity-版本2.0.0-rc1-预发行版GET https://api.nuget.org/v3/registration3-gz-semver2/identityserver4.aspnetidentity/index.json OK https:// api。 nuget.org/v3/registration3-gz-semver2/identityserver4.aspnetidentity/index.json 484ms恢复D:\\ ProtoTypes \\ IdentityServer4 \\ IdentityServer4 \\ IdentityServer4.csproj的软件包... Install-Package:序列包含多个匹配元素行:1个字符:1 +安装包IdentityServer4.AspNetIdentity-版本2.0.0-rc1 -Pr ... + ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + CategoryInfo:未指定: (:) [Install-Package],异常+ FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCommand经过的时间:00:00:03.7728514 PM>
Following are some changes that you will migrate your project to asp.net core 2.0.? 以下是将项目迁移到asp.net core 2.0的一些更改。 Step 1: Download asp.net core 2.0 gx64x for visual studio 2017 from the following link.? 步骤1:从以下链接下载Visual Studio 2017的asp.net core 2.0 gx64x。? https://www.microsoft.com/net/download/core ? https://www.microsoft.com/net/download/core ? Step 2: Download from Nuget packages or from package manager console 1-Install-Package IdentityServer4 -Version 2.0.0 2-Install-Package IdentityServer4.AspNetIdentity -Version 2.0.0-rc1-update2 步骤2:从Nuget程序包或程序包管理器控制台中下载1-Install-Package IdentityServer4-版本2.0.0 2-Install-Package IdentityServer4.AspNetIdentity-版本2.0.0-rc1-update2
Step 3: Update Some Code in Csproj file. 步骤3:更新Csproj文件中的某些代码。 Before: netcoreapp1.1 After: netcoreapp2.0 之前:netcoreapp1.1之后:netcoreapp2.0
Before:
<PackageReference Include="Microsoft.AspNetCore.Authentication.Cookies" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.1" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="1.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0" />
After:
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
Before:
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" />
After:
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
Step 4: Update in Program.cs Class Before: public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup() .Build(); 步骤4:在Program.cs类中更新之前:public static void Main(string [] args){var host = new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).UseIISIntegration().UseStartup() 。建立(); host.Run(); host.Run(); } After: public static void Main(string[] args) { BuildWebHost(args).Run(); }之后:public static void Main(string [] args){BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup() .Build(); }公共静态IWebHost BuildWebHost(string [] args)=> WebHost.CreateDefaultBuilder(args).UseStartup().Build(); Step 5: Update in StartUp.cs 步骤5:在StartUp.cs中更新
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryPersistedGrants()
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients())
.AddAspNetIdentity<ApplicationUser>();
Before:
app.UseIdentity();
After:
app.UseAuthentication();
Step 6:?Changes in Manage Login ViewModel 步骤6:?Manage Login ViewModel中的更改
Before:
public IList<AuthenticationDescription> OtherLogins { get; set; }
After:
public IList<AuthenticationScheme> OtherLogins { get; set; }
Step 7: Changes in Manager Controller 步骤7:Manager控制器中的更改
Before:
var otherLogins = _signInManager
.GetExternalAuthenticationSchemes()
.Where(auth => userLogins
.All(ul => auth.AuthenticationScheme != ul.LoginProvider))
.ToList();
After:
var otherLogins = (await _signInManager
.GetExternalAuthenticationSchemesAsync())
.Where(auth => userLogins
.All(ul => auth.Name != ul.LoginProvider))
.ToList();
Step 8: Change sin Login.cshtml file Before: var loginProviders = SignInManager.GetExternalAuthenticationSchemes().ToList(); 步骤8:更改sin Login.cshtml文件之前:var loginProviders = SignInManager.GetExternalAuthenticationSchemes()。ToList(); After: var loginProviders = (await SignInManager.GetExternalAuthenticationSchemesAsync()).ToList(); 之后:var loginProviders =(等待SignInManager.GetExternalAuthenticationSchemesAsync())。ToList();
Before:
<button type="submit" class="btn btn-default"
name="provider" value="@provider.AuthenticationScheme"
title="Log in using your @provider.DisplayName account">
@provider.AuthenticationScheme
</button>
After:
<button type="submit" class="btn btn-default"
name="provider" value="@provider.Name"
title="Log in using your @provider.DisplayName account">
@provider.Name
</button>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.