【问题标题】:IdentityServerOptions PublicOriginIdentityServerOptions 公共来源
【发布时间】:2022-11-05 10:02:15
【问题描述】:

慢慢地将系统从 .net core 2.1 迁移到 3.1。 在更新 IdentityServer4 到 3.1 版本时。 我陷入了指定选项的问题方法 AddIdentityServer 中。

var builder = services.AddIdentityServer(options =>
{             
    (!string.IsNullOrWhiteSpace(identityServerSettingsConfig.PublicOrigin))
    {
        options.PublicOrigin = identityServerSettingsConfig.PublicOrigin;
    }
})

错误:“IdentityServerOptions”不包含“PublicOrigin”的定义,并且找不到接受“IdentityServerOptions”类型的第一个参数的可访问扩展方法“PublicOrigin

安装包:

    <PackageReference Include="IdentityServer4" Version="4.1.2" />
    <PackageReference Include="IdentityServer4.AccessTokenValidation" Version="3.0.1" />
    <PackageReference Include="IdentityServer4.AspNetIdentity" Version="4.1.2" />
    <PackageReference Include="IdentityServer4.EntityFramework" Version="2.5.3" />
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="5.0.5" />
    <PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="3.1.0" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.0" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.0">

【问题讨论】:

标签: c# identityserver4


【解决方案1】:

IdentityServerOptions.PublicOrigin 属性在 IdentityServer4 1.0 back in 2016 中被删除。

这个 GitHub 问题问的是和你一样的问题:https://github.com/IdentityServer/IdentityServer4/issues/4535

IdentityServer 的一位作者说它已被删除并解释了原因 - 以及如何解决它(假设你真的需要它,我提到这个是因为你可能不会需要恢复此功能):

最小权限评论于 2020 年 6 月 19 日:

它消失了。这是一个 hack - 请从现在开始在 ASP.NET Core 中使用转发标头方法。

解决方法是在管道的开头添加一个调用 HttpContextExtensions.SetIdentityServerOrigin 的中间件步骤,因此它应该看起来像这样的:

  • 在下面的代码块中,在 //------- cmets 之间添加代码。
  • 我包含了我自己的 IS4 项目之一中的其他 Configure pipeline/appBuilder 方法,因此您可以看到一个完整的示例。
using IdentityServer4.Extensions; // For IS4's `HttpContextExtensions`

public class Startup
{
    // ...

    public void Configure( IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime applicationLifetime )
    {
        _ = app
            //-------------------------------- Add the code below this line
            .Use( async (ctx, next) =>
            {
                ctx.SetIdentityServerOrigin( "https://example.com" );
                await next();
            })
            //-------------------------------- Add the code above this line

            .UseCors()
            .UseAuthentication()
            .UseOpenApi()
            .UseSwaggerUi3()
            .UseIdentityServer()
            .UseRouting()
            .UseAuthorization()
            .UseEndpoints( routeBuilder =>
            {
                _ = routeBuilder.MapControllers();
            } )
            .UseStaticFiles();
    }
}

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 2019-05-10
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2015-11-24
    • 2014-06-07
    • 2021-11-12
    相关资源
    最近更新 更多