37
How to do SSO in ~10 lines of code Speaker Vyacheslav Mikhaylov ([email protected] ) [ IT Talks | IT NotStop | .Net meetup ] 1

Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

Embed Size (px)

Citation preview

Page 1: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

1

How to do SSO in ~10 lines of code

Speaker Vyacheslav Mikhaylov ([email protected])

[ IT Talks | IT NotStop | .Net meetup ]

Page 2: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

2

Today’s topics• Some theory and history• OAuth2 и Open ID Connect• IndentityServer/IdentityManager• Architecture• How to use

Page 3: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

3

Terminology• Identification - login• Authentication – proof login is correct • Authorization – authenticated user can access to some resource

Page 4: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

4

Page 5: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

5

Page 6: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

6

HTTP Basic Authentication

Page 7: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

7

HTTP Digest Authentication

Page 8: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

8

Forms Authentication

Page 9: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

9

Token Authentication

Page 10: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

10

Token Authentication

Page 11: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

11

Token Authentication

Page 12: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

12

Big picture

Page 13: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

13

Big picture

Page 14: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

14

Terminology • OpenID Connect Provider (OP) - security token service, identity provider,

authorization server, IP-STS and more.• Client• User - human• Scope

• Identity scopes – openid, profile, email• Resource scopes – various API

• Authentication/Token Request• Identity Token• Access Token

Page 15: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

15

Page 16: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

16

Token structure (jwt.io)

Page 17: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

17

Thinktecture Identity Server• OpenID Connect and OAuth2• Авторы• Dominick Baier• Brock Allen

• Identity Server• Identity Manager• MembershipReboot

Page 18: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

18

Features• Authentication as a Service• Single Sign-on / Sign-out• Access Control for APIs• Federation• Customization everywhere

Page 19: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

19

Page 20: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

20

Server

Page 21: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

21

Server

Page 22: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

22

API

Page 23: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

23

API

Page 24: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

24

API

Page 25: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

25

Client

Page 26: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

26

Client

Page 27: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

27

What is Identity Server• Authorization/Authentication• Token• UserInfo• Discovery• Logout• Token Revocation• Token Introspection• Access Token Validation• Identity Token Validation

Page 28: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

28

Customization• AuthenticationSessionValidator, AuthorizationCodeStore• ClaimsProvider, ClientPermissionsService• ClientStore, ConsentService, ConsentStore• CorsPolicyService, CustomGrantValidators, CustomRequestValidator,

CustomTokenResponseGenerator, CustomTokenValidator • EventService, ExternalClaimsFilter, LocalizationService, RedirectUriValidator• RefreshTokenService, RefreshTokenStore, ScopeStore• SecretParsers, SecretValidators, SigningKeyService• TokenHandleStore, TokenService, TokenSigningService, UserService• ViewService

Page 29: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

29

Customization• AuthenticationSessionValidator, AuthorizationCodeStore• ClaimsProvider, ClientPermissionsService• ClientStore, ConsentService, ConsentStore• CorsPolicyService, CustomGrantValidators, CustomRequestValidator,

CustomTokenResponseGenerator, CustomTokenValidator • EventService, ExternalClaimsFilter, LocalizationService, RedirectUriValidator• RefreshTokenService, RefreshTokenStore, ScopeStore• SecretParsers, SecretValidators, SigningKeyService• TokenHandleStore, TokenService, TokenSigningService, UserService• ViewService

Page 30: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

30

Customization• ClientStore• ScopeStore• UserService• ViewService

Page 31: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

31

What is Identity Manager• Simple creating users, editing user information (passwords, email,

claims, roles, etc.) and deleting users. • Replacement for the ASP.NET WebSite Administration tool User

Management

Page 32: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

32

What is MembershipReboot• single- or multi-tenant account management• flexible account storage design (relational/SQL or object/NoSql)• claims-aware user identities• support for account registration, email verification, password reset, etc.• account lockout for multiple failed login attempts (password guessing)• extensible templating for email notifications• customizable username, password and email validation• notification system for account activity and updates (e.g. for auditing)• account linking with external identity providers (enterprise or social)• supports certificate based authentication• proper password storage (via PBKDF2)

• configurable iterations• defaults to OWASP recommendations for iterations (e.g. 64K in year 2012)

• two factor authentication support via mobile phone SMS messages or client certificates

Page 33: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

33

Demo

Page 35: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

Thank youTo be continued…

Page 36: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

36

Page 37: Вячеслав Михайлов «Как сделать Single Sign-On в веб-приложении в 10 строк кода»

37