为一个 "Application registration portal" 应用程序使用多个重定向 url

Using multiple redirect url's for an "Application registration portal" app

如果我在“Application registration portal”中创建应用程序,只有第一个重定向 url 有效。

例如;如果我添加 https://google.com/ first, this url works. But if I add https://localhost/ 它不会。 当我添加 https://localhost/ first and https://google.com/ 第二个时,只有本地主机 url 有效。

使一切正常运行的唯一方法是在 "Application registration portal" 中创建两个单独的应用程序。一种用于开发环境,一种用于生产环境。

对我来说,这感觉像是一些服务器端缓存问题。

解决了!我忘了尝试我在 github 上找到的解决方案,它解决了我的问题。

https://github.com/IdentityServer/IdentityServer3/issues/1458


更新

我的 Startup.Auth.cs 中的 ConfigureAuth 方法现在包含以下代码:

app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseOpenIdConnectAuthentication(
    new OpenIdConnectAuthenticationOptions
    {
        ClientId = clientId,
        Authority = Authority,

        Notifications = new OpenIdConnectAuthenticationNotifications()
        {
            // If there is a code in the OpenID Connect response, redeem it for an access token and refresh token, and store those away.
            AuthorizationCodeReceived = (context) =>
            {
                var code = context.Code;
                ClientCredential credential = new ClientCredential(clientId, appKey);
                string signedInUserID = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
                AuthenticationContext authContext = new AuthenticationContext(Authority, new ADALTokenCache(signedInUserID));
                AuthenticationResult result = authContext.AcquireTokenByAuthorizationCode(code, new Uri(redirectUri), credential, graphResourceId);

                return Task.FromResult(0);
            },

            RedirectToIdentityProvider = (context) =>
            {
                context.ProtocolMessage.RedirectUri = redirectUri;
                context.ProtocolMessage.PostLogoutRedirectUri = redirectUri;

                return Task.FromResult(0);
            }
        },
    }
);

注意:此代码用于 ASP.NET MVC 应用程序,该应用程序使用基于 cookie 的身份验证。