Nano Hash - криптовалюты, майнинг, программирование

Аутентификация в интерфейсе javascript или в бэкэнде MVC?

Я пытаюсь настроить аутентификацию в следующей архитектуре:

  1. Веб-API REST, выполненный в ядре asp.net
  2. Клиент MVC, где «представление» — это одностраничное приложение (vue.js). Для справки, я использую этот шаблон: TrilonIO

Я хочу использовать сервер идентификации + идентификации.

Насколько я понимаю, мой API — это защищенный ресурс: чтобы получить к нему доступ, пользователь должен войти на сервер идентификации и получить токен.

Мое приложение MVC является одним из «клиентов» сервера идентификации. А вот тут я запутался:

Должен ли я реализовать аутентификацию в приложении mvc, чтобы основной контроллер индекса был защищен? Затем, чтобы «загрузить» спа-центр, пользователь должен будет пройти аутентификацию на сервере идентификации, получить токен, а затем может загрузить?

Или я игнорирую реализацию какой-либо аутентификации со стороны mvc и просто использую клиент oidc для реализации аутентификации со стороны браузера?

Если я реализую аутентификацию на маршруте mvc, то, по сути, пользователь проходит аутентификацию дважды: во-первых, вы проходите аутентификацию, чтобы получить доступ к представлению в приложении. После того, как вы получите доступ к спа-центру, вам необходимо пройти аутентификацию для доступа к веб-API. Будет ли достаточно одного «логина» для обоих? Как? Не будут ли токены настроены по-другому?

Если я выполняю аутентификацию только в браузере для доступа к ресурсам, то является ли мое приложение «небезопасным»?

Любое понимание будет оценено; Я определенно новичок в этом.

Заранее спасибо!


Ответы:


1

Ваше приложение должно быть защищено.

Если ваш внешний интерфейс (например, браузер) выполняет аутентификацию через какую-либо третью сторону, тогда веб-API или серверное приложение (если вы используете что-то вроде asp.net mvc) должны быть уведомлены от внешний интерфейс. Затем веб-API подтвердит стороннее использование токена, возможно, с некоторыми дополнительными данными, для проверки аутентификации. Вы даже можете выполнить этот шаг с пользовательской аутентификацией на вашем сервере через веб-API.

Это потребовало бы аутентификации, и теперь у нас есть токен на сервере, который представляет аутентифицированного пользователя.

Каждый обратный вызов веб-API/приложения будет включать некоторый токен, который веб-API/приложение использует, чтобы узнать, авторизованы ли вы для доступа к определенным функциям.

Это означает, что бит, который проверяет/регистрирует аутентификацию вместе с токеном, затем будет использовать другой механизм или даже тот же сторонний механизм, если он поддерживает авторизацию, для получения авторизации. Мне нравится использовать uri, представляющий разрешение, а затем применять фильтр к каждому методу веб-API, который проверяет, имеет ли полученный токен авторизованный доступ.

26.07.2019
  • Здравствуйте, большое спасибо за ваш ответ. Немного, что меня все еще смущает, заключается в следующем: я аутентифицирую приложение как приложение mvc с аутентификацией, настроенной в startup.cs? В этом случае, чтобы получить доступ к единому представлению, на котором построен весь спа-центр, вам необходимо пройти аутентификацию и получить токен, который позволит вам получить доступ к остальным API. Этот токен может быть передан обратно во внешний интерфейс, а затем добавлен ко всем вызовам API. В качестве альтернативы, нужно ли мне использовать oidc-client для аутентификации во внешнем интерфейсе? 26.07.2019
  • Если я правильно вас понял, вы хотите пройти аутентификацию перед подачей кода SPA. Однако в этом нет необходимости, так как ваш SPA будет выполнять аутентификацию. Ваш веб-API в любом случае открыт, поэтому вам нужен токен для взаимодействия с ним. SPA также будет выполнять авторизацию, возможно, используя те же разрешения, что и при начальной проверке учетных данных, чтобы предотвратить перемещение по SPA, хотя это всего лишь мера предосторожности, поскольку пользователь не сможет взаимодействовать с веб-API без действительного токена. 26.07.2019
  • Большое спасибо. Так что в этом случае моя аутентификация выполняется исключительно через oidc-клиент? Нет необходимости реализовывать его в классе запуска моего приложения mvc? Спасибо. 26.07.2019
  • Вот вопрос SO, который, кажется, в том же духе: stackoverflow.com/questions/49646561/ 27.07.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..