Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Тимур Нугаев "Разграничение доступа в приложени...

DotNetRu
October 05, 2019

Тимур Нугаев "Разграничение доступа в приложении с микросервисной архитектурой" 

Практический каждый разработчик в ходе своей карьеры сталкивался с необходимостью написания собственной или интегрировании со сторонней системой авторизации.
В настоящее время существуют стандарты авторизации и готовые фреймворки, их реализующие – касалось бы бери да используй!
Но при попытке это сделать выясняется то, что примеры использования приведены либо с точки зрения примитивных сценариев работы, либо с точки зрения наиболее массового использования и их категорически не хватает для энтерпрайз приложения.
В данном докладе будет изложен наш опыт разработки системы разграничения доступа в микросервисном окружении, а именно:
- Базовые понятия разграничения доступа
- Применение протоколов OAuth 2.0 и OpenIdConnect
- Различные сценарии авторизации и вытекающие из них тонкости реализации
- Практики использования Thinktecture IdentityServer 4 для сведения всего вышеперечисленного воедино.

DotNetRu

October 05, 2019
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. Services Web server Application A Services Web server Application B

    Services Web server Application N Authorization Server OAuth2.0 OpenID Connect Thinktekture IdentityServer 4.0 2
  2. Проверка на authorization service Авторизация в контексте приложения Фильтрация результатов

    запросов Сервис Roles based Claims based ABAC (XACML, NGAC) Декларативная Client - Api Resource 9
  3. Client Resource Server Resource Owner profile: - name - email

    roles: - role_name Authorization Server photos: - api/photos - api/photos/descriptions API Scopes 11
  4. Client Resource Server Resource Owner photos: - api/photos - api/photos/descriptions

    profile: - name - email roles: - role_name Authorization Server Id Scopes 12
  5. Client (Photo retouch app) Resource Server (Photo storage) Authorization Server

    (Some social network) Resource Owner retouch my photos photos: api/photos profile: - name - email roles: - role_name client_id API scopes Id scopes Client photos profil e role s 13
  6. Client Resource Server Authorization Server photos: api/photos Resource Owner redirect

    to AS photos profile client_id profile: - name - email roles: - role_name client_id API scopes Id scopes Client photos profil e role s 14
  7. Client Authorization Server photos: api/photos Resource Server Resource Owner photos

    profile client_id client_id API scopes Id scopes Client photos profil e role s /authorize 15
  8. Client Authorization Server photos: api/photos Resource Server Resource Owner id_token

    CLAIMS: - sub : 1 - name: kolyan - email: kolyan@... access_token photos profile CLAIMS: - sub : 1 - name: kolyan - email: kolyan@... access_token id_token refresh_token 21
  9. photos: api/photos Resource Server Contest Authorization Server photos profile Resource

    Owner Client 1. Доступ к данным определяется компанией 29
  10. photos: api/photos Resource Server Contest Authorization Server photos profile Resource

    Owner Client 1. Доступ к данным определяется компанией 2. Нельзя допустить нарушение бизнес-процессов 30
  11. photos: api/photos Resource Server Contest Authorization Server photos profile Resource

    Owner Client 1. Доступ к данным определяется компанией 2. Нельзя допустить нарушение бизнес-процессов 3. Пользователь - объект проверки 31
  12. Client Resource Server Authorization Server Resource Owner redirect to AS

    photos profile client_id profile: - name - email roles: - role_name client_id API scopes Id scopes Client photos profil e role s role_name == ? photos: api/photos 33
  13. Client Resource Server Authorization Server Resource Owner redirect to AS

    photos profile profile: - name - email roles: - role_name client_id API scopes Id scopes Client photos profil e role s role_name == ? photos: api/photos client_id roles 34
  14. client_id API scopes Id scopes profile: - name - email

    role_name == ? photos profile Client roles roles: photos: api/photos - role_name Resource Server Authorization Server redirect to AS photos profile Resource Owner client_id Client roles UserInfo endpoint? 35
  15. client_id API scopes Id scopes profile: - name - email

    role_name == ? photos profile Client roles roles: photos: api/photos - role_name Resource Server Authorization Server redirect to AS photos profile Resource Owner client_id Client roles UserInfo endpoint Custom API? 36
  16. client_id API scopes Id scopes profile: - name - email

    role_name == ? photos profile Client roles roles: photos: api/photos - role_name Resource Server Authorization Server redirect to AS photos profile Resource Owner client_id Client roles UserInfo endpoint Custom API Introspection endpoint? 37
  17. client_id API scopes Id scopes profile: - name - email

    role_name == ? photos profile Client roles roles: photos: api/photos - role_name Resource Server Authorization Server redirect to AS photos profile Resource Owner client_id Client roles 38
  18. Client Authorization Server photos: api/photos Resource Server Resource Owner client_id

    API scopes Id scopes Client photos profil e role s likes: api/likes Resource Server api/photos/{sub} access_token api/likes/{sub} access_token 42
  19. Client Authorization Server photos: api/photos Resource Server Resource Owner client_id

    API scopes Id scopes Client photo s likes profil e role s Resource Server likes: api/likes redirect to AS profile client_id photos likes 43
  20. Client photos: api/photos Resource Server Resource Owner client_id API scopes

    Id scopes Client photos profile roles Photos RS likes likes: api/likes Resource Server Authorization Server api/photos/{sub} access_token 46
  21. Client Resource Owner client_id API scopes Id scopes Client photos

    profile roles Photos RS likes likes: api/likes Resource Server likes access_token /token?grant_type=delegation photos: api/photos Resource Server Authorization Server api/photos/{sub} access_token 47
  22. Client Resource Owner likes: api/likes Resource Server rs_access_token rs_refresh_token photos:

    api/photos Resource Server Authorization Server api/likes/{sub} rs_access_token 48
  23. client_id API scopes Id scopes likes access_token Client photos profile

    /token?grant_type=delegation roles photos: api/photos Photos RS likes Resource Server Authorization Server api/photos/{sub} access_token likes: api/likes Resource Server Resource Owner Client Запланированные задачи! 49