IdentityServer3 Внешний OID C аутентификация перенаправляет к клиенту - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть веб-клиент, который использует IdentityServer3 (IDS3) и мое собственное управление пользователями. В моем IDS3 я перенаправляю к Внешнему поставщику (microsoftonline.com) для аутентификации. Как только аутентификация прошла успешно, мне нужно перенаправить на клиентский (веб) URL.

Я могу выполнить аутентификацию и получить id_token. Как бы то ни было, я не уверен, как я могу перенаправить на запрошенный клиентом URL. внешнее перенаправление возвращается к IDS3 redirecturi, но не знаю, как заставить его перенаправить на клиент.

Поток должен быть клиент -> IDS3 -> внешний (Azure openid connect) -> IDS3 -> клиент

Мой код ниже в IDS3 startup.cs

    public void Configuration(IAppBuilder app)
    { 
        app.Map("/identity", identity =>
        {
            var idSvrFactory = Factory.Configure("IdServerDB");

            idSvrFactory.ConfigureUserService("UserMgmtDB");

            var options = new IdentityServerOptions
            {
                SiteName = "My Site",
                SigningCertificate = Certificates.Get(),
                Factory = idSvrFactory,
                EnableWelcomePage = false,
                RequireSsl = true,

                AuthenticationOptions = new AuthenticationOptions
                {
                    EnableSignOutPrompt = false,
                    EnablePostSignOutAutoRedirect = true,
                    PostSignOutAutoRedirectDelay = 0,
                    SignInMessageThreshold = 1,
                    // EnableLocalLogin = false,
                    IdentityProviders = ConfigureAzureIdentityProviders,
                    CookieOptions = new IdentityServer3.Core.Configuration.CookieOptions
                    {
                        SecureMode = CookieSecureMode.Always,
                        Path = "/",
                        AllowRememberMe = false, 
                        IsPersistent = true,
                    },
                },
            };

            identity.UseIdentityServer(options);
        });
    } 

    public static void ConfigureAzureIdentityProviders(IAppBuilder app, string signInAsType)
    {
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "Cookies"
        });


        string clientId = "client id from azure"; // your client ID as configured in Azure
        string redirectUri = "https://localhost:port/identity/";   // the reply URL as configured in Azure
        string postLogoutRedirectUri = "https://localhost:port/identity/something";  

        OpenIdConnectAuthenticationOptions options = new OpenIdConnectAuthenticationOptions
        {
            AuthenticationType = "AzureAd",
            Caption = "Sign in with Azure AD",
            Scope = "openid",
            ClientId = clientId,
            Authority = "authority url",
            PostLogoutRedirectUri = postLogoutRedirectUri,
             RedirectUri = redirectUri,

            AuthenticationMode = sec.AuthenticationMode.Active,
            TokenValidationParameters = new TokenValidationParameters
            { 
                ValidateIssuer = false,
            }, 

            SignInAsAuthenticationType = signInAsType, //"Cookies",  
            //UseTokenLifetime=false,

            }
        };
        app.UseOpenIdConnectAuthentication(options);
 }

Мой IDS3 должен подключиться к системе управления пользователями и получить некоторые роли и bearer_token для моего клиента.

Благодарим Вас за помощь.

PS; Мы вносим изменения в существующий IDS3, Identity4 находится в планах на будущее. Спасибо, Навя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...