Можно ли настроить Blazor WebAssembly oid c с настраиваемым компонентом / страницей входа - PullRequest
0 голосов
/ 10 июля 2020

У меня есть приложение blazor wasm, настроенное с аутентификацией oid c, которое работает правильно. На сайте 2 домена:

  1. identity.example.com, на котором запущен сервер Identity Server 4
  2. 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>

1 Ответ

1 голос
/ 10 июля 2020

Из соображений безопасности это плохая идея. Но вы можете реализовать страницу входа в систему там, где хотите, если вы предоставите хороший токен защиты от подделки в данных формы и заголовке запроса. Это означает, что вам нужна страница входа с сервера IS4. Проанализируйте страницу, чтобы найти скрытое поле формы, содержащее маркер защиты от подделки XSRF. Отправьте файлы cookie и заголовки на сервер IS4. Удачи.

Если вы управляете сервером IS4, проще настроить страницу входа в систему IS4.

...