OpenId 3 для OpenId 4 нескольких имен эмитента - PullRequest
1 голос
/ 11 февраля 2020

Я мигрирую с OpenId 3 на Open id 4 (часть нашей миграции с. net 4 на. net core 3). Одним из требований является наличие внутреннего и внешнего DNS, который будет проверять наш открытый идентификатор. У нас есть сторонний хостинг нашего Open Id Web App, который взимает плату на основе баланса нагрузки Чтобы уменьшить это, мы хотим иметь возможность направлять вызовы провайдеру идентификации внутри за балансировщиками нагрузки. (к сожалению, они не могут иметь внутреннюю маршрутизацию на основе DNS, звучит подозрительно, как cba, однако, мы находимся там, где мы есть)

Мы достигли этого ранее, установив имя эмитента, однако эта функция была удалена в открытом Id 4, и после нескольких часов исследований я все еще застрял. Если бы кто-нибудь мог мне помочь, указав направление нового или альтернативного способа его реализации, это было бы замечательно.

Мы все любим код, поэтому ниже приведен файл конфигурации моего внешнего веб-API

public void Configuration(IAppBuilder app)
{
    var config = new HttpConfiguration
    {
        DependencyResolver = new UnityDependencyResolver(UnityConfig.GetConfiguredContainer())
    };

    var corsAttribute = new EnableCorsAttribute("*", "*", "*");
    config.EnableCors(corsAttribute);

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional });

    // Configure Authorisation
    JwtSecurityTokenHandler.InboundClaimTypeMap.Clear();
    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
    {
        Authority = ConfigurationManager.AppSettings["IdentityServerUrl"],
        RequiredScopes = new[] { ConfigurationManager.AppSettings["IdentityServerScopes"] },
        PreserveAccessToken = true,

        // This is set to convince the IdentityServer middleware to validate with the correct issuer url.
        // Only needed for APIs/services that talk to both the internal and external URLs for IdentityServer
        IssuerName = ConfigurationManager.AppSettings["IdentityServerIssuerUri"],
    });

    app.UseWebApi(config);
}

и ниже - параметры конфигурации провайдеров идентификации (удалена вся конфиденциальная информация)

// IdentityServer options
var options = new IdentityServerOptions
{
    EventsOptions = new EventsOptions
    {
        RaiseErrorEvents = true,
        RaiseFailureEvents = true,
        RaiseInformationEvents = true,
        RaiseSuccessEvents = true
    },
    SiteName = "Identity",
    SigningCertificate = primaryTokenSigningCertificate,
    SecondarySigningCertificate = secondaryTokenSigningCertificate,
    IssuerUri = ConfigurationManager.AppSettings["IdentityServerIssuerUri"],
    Factory = factory,
    EnableWelcomePage = false,
    RequireSsl = SupportMethods.ToBoolean(ConfigurationManager.AppSettings["RequireSsl"]),
    AuthenticationOptions = new AuthenticationOptions
    {
        // We use default cookie options. Otherwise override values using: CookieOptions = new IdentityServer3.Core.Configuration.CookieOptions(), 
        RememberLastUsername = true,
        RequireSignOutPrompt = false,
        EnableSignOutPrompt = false,
        EnablePostSignOutAutoRedirect = true,
        LoginPageLinks = new List<LoginPageLink>
        {
            new LoginPageLink
            {
                Href = ConfigurationManager.AppSettings["ForgotPasswordUrl"],
                Text = "Forgot Password?",
                Type = "forgot-password"
            }
        }
    },
};
...