У меня есть приложение blazor wasm, настроенное с аутентификацией oid c, которое работает правильно. На сайте 2 домена:
- identity.example.com, на котором запущен сервер Identity Server 4
- example.com, который обслуживает сайт blazor wasm.
Все работает, когда я добавляю
@attribute [Authorize]
в компонент бритвы, пользователь (если не аутентифицирован) перенаправляется на https://identity.example.com/Account/Login?ReturnUrl... Мне было интересно, есть ли способ реализовать настраиваемую страницу / компонент входа в домен mysite.com, что-то вроде mysite.com/Login, чтобы пользователь был перенаправлен на него, и эта форма отправлялась в домены идентификации AccountController и все еще есть фреймворк, обрабатывающий токен jwt и ...?
Сначала у меня была пара других причин, я бы хотел, чтобы все на сайте было за аутентификацией. Прямо сейчас я добавил @attribute [Authorize] на каждую страницу, но это по-прежнему вызывает загрузку сайта, и только после того, как пользователь видит сайт, они перенаправляются на страницу входа на identity.example.com. Это выглядит как-то странно, следующая страница входа на identity.example.com не похожа на остальную часть сайта. Я хотел бы попытаться сделать "тематику" страницы входа похожей на остальную часть сайта
В настоящее время я настроил Oid c вот так
nuget package Microsoft.AspNetCore.Components.WebAssembly.Authentication
в настройках приложений. json
{
"oidc": {
"Authority": "https://identity.example.com/",
"ClientId": "abcd",
"DefaultScopes": [
"openid",
"profile",
"email"
],
"PostLogoutRedirectUri": "https://example.com",
"ResponseType": "code"
}
}
, тогда в моем Program.cs у меня есть
builder.Services.AddOidcAuthentication(options => {
builder.Configuration.Bind("oidc", options.ProviderOptions);
});
и в моем wwwroot/index.html
<script src="_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js"></script>