SlideShare a Scribd company logo
1 of 70
Ludzie! Zabezpieczajcie się!
OAuth2, OpenID Connect, IdentityServer
Jarosław Ogiegło
Krótka historia jednego projektu
https://i.kym-cdn.com/entries/icons/original/000/006/216/TRUESTORY.jpg
https://imgflip.com/s/meme/Grandma-Finds-The-Internet.jpg
https://memeguy.com/photos/images/when-my-hoster-complains-about-my-password-being-too-long-130206.jpg
http://www.socialsmiling.com/image/asset/344_are-you-google-because-you-have-everything-im-searching-for_438-654.jpg
https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX8022086.jpg
Authentication – Uwierzytelnianie
http://www.quickmeme.com/img/f7/f7471d42a8b2b6ab712142e6563f50d6c041c7554d3b3951f1398556450bbac9.jpg
Authorization - Autoryzacja
http://weknowmemes.com/generator/uploads/generated/g1366824328707416474.jpg
https://www.teamdesk.net/blog/wp-content/uploads/2017/05/oauth2-640x410.jpg
• Użytkownik
• Aplikacja kliencka
• Serwer autoryzacyjny
• Serwer z zasobami
• Poświadczenie
https://static.thenounproject.com/png/309127-200.png
• Resource Owner Password Credentials Flow
• Client Credentials Flow
• Authorization Code Flow
• Implicit Flow
https://memegenerator.net/img/instances/52922778/i-know-oauth.jpg
https://i.kym-cdn.com/entries/icons/original/000/019/571/dailystruggg.jpg
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
Authorization Code Flow
1. Użytkownik niezalogowany
2. Przekierowanie po login
3. Użytkownik się loguje
4. Wymiana kodu na token
5. Uzyskanie tokena
Implicit Flow
https://openid.net/wordpress-content/uploads/2014/09/openid-r-logo-900x360.png
Implicit Flow
https://logrocket.com/blog/content/images/2018/10/Screen-Shot-2018-10-11-at-1.40.06-PM.png
Tokeny
{
"alg": "RS256", (lub "HS256")
"typ": "JWT"
}
Tokeny
{
"nbf": 1543151143,
"exp": 1543154743,
"iss": "http://localhost:5000",
"aud": [
"api1"
],
"client_custom_claim": "some value",
...
}
Tokeny
{
"nbf": 1543151143,
"exp": 1543154743,
"iss": "http://localhost:5000",
"aud": [
"api1"
],
"client_custom_claim": "some value",
...
}
Tokeny
{
"nbf": 1543151143,
"exp": 1543154743,
"iss": "http://localhost:5000",
"aud": [
"api1"
],
"client_custom_claim": "some value",
...
}
Tokeny
{
"nbf": 1543151143,
"exp": 1543154743,
"iss": "http://localhost:5000",
"aud": [
"api1"
],
"client_custom_claim": "some value",
...
}
Tokeny
{
"nbf": 1543151143,
"exp": 1543154743,
"iss": "http://localhost:5000",
"aud": [
"api1"
],
"client_custom_claim": "some value",
...
}
Tokeny
{
"nbf": 1543151143,
"exp": 1543154743,
"iss": "http://localhost:5000",
"aud": [
"api1"
],
"client_custom_claim": "some value",
...
}
Tokeny
Tokeny
HMACSHA256(
base64UrlEncode(header) + "." + base64UrlEncode(payload),
secret
)
base64UrlEncode(header) + "." + base64UrlEncode(payload) + "."
+ podpis
https://logrocket.com/blog/content/images/2018/10/Screen-Shot-2018-10-11-at-1.40.06-PM.png
Tokeny
Żądanie
Żądanie
Żądanie
Żądanie
Żądanie
Żądanie
Żądanie
https://identityserver.io/images/IDserver_logotransparent.png
/.well-known/openid-configuration
/.well-known/openid-configuration
/.well-known/openid-configuration
/.well-known/openid-configuration
/.well-known/openid-configuration
/.well-known/openid-configuration
/.well-known/openid-configuration
Konfiguracja IdentityServer
Konfiguracja IdentityServer
Konfiguracja IdentityServer
Konfiguracja IdentityServer
Konfiguracja IdentityServer
Definiowanie aplikacji klienckich
Definiowanie aplikacji klienckich
Definiowanie aplikacji klienckich
Definiowanie aplikacji klienckich
Wykorzystanie Oidc-client
Wykorzystanie Oidc-client
Wykorzystanie Oidc-client
Wykorzystanie Oidc-client
Zabezpieczenie API
https://nerdist.com/wp-content/uploads/2018/10/Confused-Nick-Young.jpg
• Uwierzytelnianie != Autoryzacja
• Autoryzacja => OAuth2
• Uwierzytelnianie => OpenID Connect
• Implementacja - IdentityServer4
https://i.kym-cdn.com/entries/icons/original/000/011/743/metal-gear-alert.jpg
Prezentacja dostępna pod adresem:
github.com/jogieglo/fdd2018
Dziękuję
jogieglo@future-processing.com

More Related Content

More from Future Processing

[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...Future Processing
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny BlockchainFuture Processing
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈XFuture Processing
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...Future Processing
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NETFuture Processing
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...Future Processing
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...Future Processing
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark ApplicationsFuture Processing
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test AutomationFuture Processing
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software TesterFuture Processing
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOpsFuture Processing
 
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)Future Processing
 
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minutFuture Processing
 
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...Future Processing
 
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...Future Processing
 
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...Future Processing
 
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczneFuture Processing
 
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDDFuture Processing
 
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...Future Processing
 
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończeniaFuture Processing
 

More from Future Processing (20)

[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
[FDD 2018] Ł. Turchan, A. Hulist, M. Duchnowski - CUDA - results over coffee ...
 
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain[FDD 2018] Lech Kalinowski - Prywatny Blockchain
[FDD 2018] Lech Kalinowski - Prywatny Blockchain
 
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
[FDD 2018] W. Malara, K. Kotowski - Autoenkodery – czyli zalety funkcji F(X)≈X
 
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
[JuraSIC! Meetup] Krzysztof Sikora- Jak Service Fabric rozwiąże twoje problem...
 
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
[JuraSIC! Meetup] Mateusz Stasch - Monady w .NET
 
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
[QE 2018] Aleksandra Kornecka – Kognitywne podejście do testowania aplikacji ...
 
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
[QE 2018] Adam Stasiak – Nadchodzi React Native – czyli o testowaniu mobilnyc...
 
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
[QE 2018] Łukasz Gawron – Testing Batch and Streaming Spark Applications
 
[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation[QE 2018] Marek Puchalski – Web Application Security Test Automation
[QE 2018] Marek Puchalski – Web Application Security Test Automation
 
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester[QE 2018] Rob Lambert – How to Thrive as a Software Tester
[QE 2018] Rob Lambert – How to Thrive as a Software Tester
 
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
[QE 2018] Paul Gerrard – Automating Assurance: Tools, Collaboration and DevOps
 
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
[QE 2018] Arnika Hryszko – Testy, które tworzą się same (prawie)
 
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
[QE 2018] Przemysław Sech – Software Quality Assistance w 40 minut
 
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
[QE 2018] Joanna Falkowska – Uniwersal Design – wprowadzenie do tematu dostęp...
 
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
[Quality Meetup] M. Witas, D. Młynek – Tabnabbing – bug czy feature twojej pr...
 
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
[Quality Meetup] Jacek Sowiński – SecDevOps – w codziennej pracy każdego deve...
 
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
[Quality Meetup] Przemek Podsiadlik - Scenariusze BDD != testy automatyczne
 
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
[Quality Meetup] Łukasz Pietrucha - Pułapki automatyzacji przy użyciu BDD
 
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
[DPTO] Michał Pogorzelski - Testy jednostkowe – narzędzie, które pozwala prac...
 
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
[DPTO] Marta Miszczyk - Z życia taska – od stworzenia do zakończenia
 

[FDD 2018] Jarosław Ogiegło - Ludzie, zabezpieczajcie się! Wprowadzenie do OAuth2, OpenID Connect oraz IdentityServer