为一个 "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 的身份验证。
如果我在“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 的身份验证。