简体   繁体   English

IdentityServer4和ASP.NET Core 2.0

[英]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.

相关问题 ASP.NET Core IdentityServer4 - 声明列表 - ASP.NET Core IdentityServer4 - Claims List 具有IdentityServer4的Asp.net Core 2身份和电子邮件确认:关联失败。 找不到Cookie - Asp.net Core 2 Identity with IdentityServer4 and email confirmation: Correlation failed. cookie not found IdentityServer4 + ASP.Net Core Identity 从客户端注销不会在 ID4 上注销 - IdentityServer4 + ASP.Net Core Identity Signout from Client does not logout on ID4 如何通过 IdentityServer4 将 OpenIdConnect 添加到 ASP.NET Core ServerSide Blazor Web 应用程序? - How to add OpenIdConnect via IdentityServer4 to ASP.NET Core ServerSide Blazor web app? 如何在使用 IdentityServer4 的 ASP.Net Core SPA 模板中为 razor 页面添加身份验证 - How to add authentication for the razor pages in the ASP.Net Core SPA template that uses IdentityServer4 带有 ASP.Net Core 应用程序的 IdentityServer4:性能问题 - 太慢了 - IdentityServer4 with ASP.Net Core App : Performance issue - too slow IdentityServer4 基于角色的 Web API 授权与 ASP.NET Core 标识 - IdentityServer4 Role Based Authorization for Web API with ASP.NET Core Identity 与Asp.Net WebForms中的Owin Startup类进行IdentityServer4通信 - Communicating with IdentityServer4 with Owin Startup class in Asp.Net WebForms Asp.NET MVC 5 IdentityServer4外部提供程序 - Asp.NET MVC 5 IdentityServer4 External Provider 具有ASP.Net Identity Project Architecture的IdentityServer4 - IdentityServer4 with ASP.Net Identity Project Architecture
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM