Skip to content

gm-soft/IdentityServerForAll

Repository files navigation

IdentityServerForAll

How to start apps

  1. Install Docker, .netcore3.1 sdk, .net6 sdk
  2. Open the /src/IdentityServer.sln with Visual Studio or Rider
  3. Set up multiple project launch with your IDE. You should start all 2 apps: IdentityServer and WebApi

How to setup IS4 in your project (ru)

Настройка IS4

  1. Добавить себе в солюшн проект IS4
  2. Настроить ресурс api в конфиге IS4
  • core.api - это идентификатор скоупа. Здесь может быть название модуля либо добенной области проекта. Если деления на разные API нет, то допустимо оставить любой идентификатор
  1. Добавить клиентов - SPA, m2m, etc - здесь
  • В качестве секрета здесь, здесь и здесь можно использовать любую строку. Ее же нужно будет упомянуть в настройках самого клиента.
  • Не забыть указать идентификатор скоупа API, а также другие необходимые скоупы
  • Не забыть указать урлы-коллбеки клиента на логин и логаут. Например, здесь и здесь. Для фронтового клиента нужно сделать то же самое. По урлу-логину нужно будет написать механизм сохранения переданного бирер-токена, по логауту - удаление
  1. При необходимости добавляем внешние провайдеры авторизации здесь. Здесь упоминается гугл, но добавлять можно любые: Active Directory, Github, Gitlab, Facebook, etc. Нужно смотреть существующие библиотеки
  • Не забыть создать серкеты в гугл-консоли для использования гугловой авторизации. Есть туториалы
  1. Прописать настройку IS4 в веб-приложении здесь
  2. Optional При необходимости написать/добавить здесь свою логику аутентификации пользователя, который переходит после автоизации с помощью внешнего провайдера (например, гугла)
  3. Optional Для кастомизации выдачи клеймов сервером можно добавить свою реализацию сервиса IProfileService. В Startup-файле использование этого сервиса настраивается тут и тут.

Настройка WebApi

  1. Добавляем использование аутентификации с помощью стороннего сервиса здесь
  2. Добавляем адентификатор скоупа здесь
  3. Не забываем указать использование правила авторизации скоупа тут

Если к Web API сделает обращение клиент, у которого нет указанного скоупа в настройках IS4, то ему будет выдан ответ 403 самой библиотекой авторизации/аутентификации

Настройка Machine-2-machine (m2m) клиента

  1. Получаем информацию об аутентифицирующем сервисе так. Здесь происходит обращение к урлу .well-known/openid-configuration
  2. Настройка аутентифицирущих данных клиента тут. Не забываем о скоупе здесь
  3. Здесь же из свойства AccessToken получаем бирер-токен, который будем использовать для обращения к Web API

Настройка Angular SPA

  1. Скачиваем пакет angular-auth-oidc-client
  2. Здесь написан класс-обертка над авторизационным сервисом из библиотеки
  3. Здесь написан класс, который работает с сессией текущего юзера и сохраняет ее в localStorage и дает возможность выдать другим компонентам инфу о текущем юзере
  4. Здесь написан класс, который дает возможность выдать другим компонентам инфу о текущем юзере
  5. Здесь код компонента, который обрабатываем сохранение бирер-токена после всего цикла аутентификации. Этот урл мы указываем как RedirectUris здесь
  6. Добавляем в произвольное место кнопку Логаута на фронте: панель навигации, меню профиля, up to your decision, а в обработчике клика по кнопке пишем код вызова библиотечного кода SignOut

Настройка тестового веб-клиента oauthdebugger.com

  1. Добавляем клиент авторизации
  2. Переходим по ссылке
  3. После автризации будет показана страница с расшифровкой переданного Bearer-токена