Я работаю над проектом MVC для клиента (давайте назовем это «Проект A»), и мы должны использовать OpenIdConnect для авторизации, которая, по сути, заставила его работать, я буду перенаправлен на сайт входа, если я не авторизован и тд. Но если я хочу перейти к действию с [Authorize]
, он отправляет запрос в OpenIdConnect-Authority, чтобы проверить, вошел ли я в систему, а затем перенаправляет меня на RedirectUrl
, который указан для этого клиента.
Поэтому, если я хочу перейти на /Home/Contact
(в моем примере с [Authorize]
), я не смогу туда попасть, потому что меня всегда перенаправят на мой "RedirectUrl".
Нужно ли мне самостоятельно сохранять Запрошенный URL, а затем перенаправлять себя?
Неважно, установил я RedirectUrl
или нет. Я думаю, что это немного странно, потому что в другом проекте B мы идем против нашего Identity Server 4, и там он работает без проблем.
Это код в моем Startup.Auth.cs:
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
});
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
ClientSecret = clientSecret,
Authority = authority,
RedirectUri = redirectUri,
ResponseType = "code",
Scope = "openid profile email",
Configuration = new Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration
{
AuthorizationEndpoint = authority + "as/authorization.oauth2"
},
});
Я должен был установить AuthorizationEndpoint самостоятельно, потому что он всегда брал неправильный URL. Разница между Проектом A и Проектом B заключается в том, что для «ResponseType» установлено значение «code» в Проекте A. В Project B установлено значение «id_token». Но я должен установить его в «код», потому что другие типы ответов не принимаются.
В проекте B я также заметил, что «.AspNet.Cookies» доступен на моем сайте.
Что не относится к проекту А. Нужно ли создавать его самостоятельно?