SlideShare a Scribd company logo
1 of 42
SØMLØS IDENTITY
Hva du bør vite
JavaZone 2017
Henrik Walker Moe
13/09/2017
Kilde: https://usabilitygal.com/2010/04/26/login-forms-the-good-the-bad-and-the-ugly/
Foto: Ross Parmly, Lisens: CC0 1.0
@henrikwm84
HENRIK WALKER MOE
MANAGER, TECHNOLOGY
BEKK
henrik.walker.moe@bekk.no
Foto: Avinor AS, Lisens: CC-BY-3.0
24 542 54551 546 09145
avinor.no Avinor App earlybird.avinor.no
EKSTERNE KANALER I AVINOR
Kilder: https://avinor.no, Avinor App, https://earlybird.avinor.no, Foto: Avinor AS
Foto: Markus Spiske, Lisens: CC0 1.0
Nøkkelen til
Sømløs Identity
er…
UX > Tech
Foto: picjumbo.com, Lisens: CC0 1.0
Tjenester
AGENDA
KodeUX
Ta med hjem konkrete tips, teknikker og ideer – gjør din løsning mer sømløs!
MÅL
Kilde: http://www.slideshare.net/lillayla/design-thinking-and-lean-ux, Foto: Lillian Ersøy
UX
Foto: William Iven, Lisens: CC0 1.0
“The total cognitive load,
or amount of mental processing power
needed to use your site,
affects how easily users find content and
complete tasks”
Minimize Cognitive Load to Maximize Usability | Kathryn Whitenton, Nielsen Norman Group
“Hick’s Law […] states that
the more stimuli (or choices) users face,
the longer it will take them to
make a decision”
Hick’s Law: Making the choice easier for users | Mads Soegaard, Interaction Design Foundation
VANLIG UX
Kilde: https://payment.schibsted.no/flow/auth/, Foto: Schibsted Products and Technology AS
BEDRE UX
Kilde: https://www.paypal.com, Foto: PayPal Inc.
EARLYBIRD
Kilde: https://earlybird.avinor.no, Foto: Avinor AS
EARLYBIRD
Kilde: https://earlybird.avinor.no, Foto: Avinor AS
Foto: Fredrick Kearney Jr, Lisens: CC0 1.0
On-boarding
Gi gode insentiver
Ryddig og
målrettet
interaksjonsdesign
Fjern tekniske
hindre
Rask feedback
Foto: NASA, Lisens: CC0 1.0
Kontekst
Gi skreddersydd
opplevelse
Finn kontekstene
Flere kontekster,
flere variasjoner
Kilde: iPhone 6 Plus, Apple Inc., Video: Avinor AS
Kilde: iPhone 6 Plus, Apple Inc., Video: Avinor AS
Kilde: iPhone 6 Plus, Apple Inc., Video: Avinor AS
Kode
Foto: Lorenzo Cafaro, Lisens: CC0 1.0
FRONT-END
Front-end
Back-end
DB
KLIENTBIBLIOTEKER
Logo: Redux, Lisens: CC0 1.0 – Logo: React, Lisens: BSD-3-Clause – Logo: IdentityModel, Lisens: Apache 2.0
React
• redux
• redux-auth-wrapper for å styre tilganger
• redux-oidc for å gjøre autentisering
• oidc-client.js som OpenID Connect klient
REDUX-AUTH-WRAPPER
Kilde: https://github.com/mjrussell/redux-auth-wrapper/blob/master/examples/basic/app.js
STYR KONTEKST MED ACR_VALUES
Kilde: https://github.com/IdentityModel/oidc-client-js/blob/dev/sample/public/user-manager-sample.js
FLERE KONTEKSTER
Klientapplikasjoner
Autentiseringsserver
Mobilnummer og kodeBrukernavn og passord
Parkerings-
booking
EarlyBird Avinor App
Kilde: Avinor App, https://earlybird.avinor.no, Foto: Avinor AS
Tjenester
Foto: Rubén Bagüés, Lisens: CC0 1.0
Fordeler
Ekspertise
Outsourcer drifting
SLA’er
Egen HTML/CSS
Ulemper
Konfigurasjon
Produktifisert
Gir bort kontroll
Sertifisert?
Begrenset HTML/CSS
LEVERANDØRER
Azure AD Azure AD B2C Auth0
http://open.bekk.no/identity-in-web-apps-2016
GJØR DET SELV
Spring Security OAuth
IdentityServer
node oidc-provider
Logo: Spring™ by Pivotal, Lisens: Apache 2.0 – Logo: IdentityServer, Lisens: Apache 2.0 – Logo: Node.js™, Lisens: CC-BY-SA 3.0
OPPSUMMERING
TjenesterKodeUX
TAKK FOR MEG!
Henrik Walker Moe
@henrikwm84

More Related Content

Similar to Sømløs Identity - JavaZone 2017, 13. september 2017

Building cross platfrom solutions for enterprise - the mobileshow- may 2014
Building cross platfrom solutions for enterprise - the mobileshow- may 2014Building cross platfrom solutions for enterprise - the mobileshow- may 2014
Building cross platfrom solutions for enterprise - the mobileshow- may 2014Kareem ElSayyed
 
RICOH THETA x IoT Developers Contest : Cloud API Seminar
 RICOH THETA x IoT Developers Contest : Cloud API Seminar RICOH THETA x IoT Developers Contest : Cloud API Seminar
RICOH THETA x IoT Developers Contest : Cloud API Seminarcontest-theta360
 
API Craft : Building Autodesk Forge APIs
API Craft : Building Autodesk Forge APIsAPI Craft : Building Autodesk Forge APIs
API Craft : Building Autodesk Forge APIsmonmohan
 
Identity and o365 on Azure
Identity and o365 on AzureIdentity and o365 on Azure
Identity and o365 on AzureMostafa
 
Flash Platform for Devices
Flash Platform for DevicesFlash Platform for Devices
Flash Platform for DevicesSerge Jespers
 
Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup
Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup
Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup Alexandra Karapidaki
 
Mobile Payment Security with CA Rapid App Security
Mobile Payment Security with CA Rapid App SecurityMobile Payment Security with CA Rapid App Security
Mobile Payment Security with CA Rapid App SecurityCA Technologies
 
Mihai Pricope
Mihai PricopeMihai Pricope
Mihai Pricopeevensys
 
CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011Nick Freear
 
Enabling the Multi-Device Universe
Enabling the Multi-Device UniverseEnabling the Multi-Device Universe
Enabling the Multi-Device UniverseCA API Management
 
Flash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phonesFlash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phonesbiskero
 
Apps with Apache Cordova and Phonegap
Apps with Apache Cordova and PhonegapApps with Apache Cordova and Phonegap
Apps with Apache Cordova and PhonegapChristian Grobmeier
 
What have you learnt about technologies from the
What have you learnt about technologies from theWhat have you learnt about technologies from the
What have you learnt about technologies from thegd12341
 
Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...
Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...
Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...Marc Müller
 
Developing with Adobe AIR
Developing with Adobe AIRDeveloping with Adobe AIR
Developing with Adobe AIRPeter Elst
 
Kubernetes meetup geneva june 2021
Kubernetes meetup geneva   june 2021Kubernetes meetup geneva   june 2021
Kubernetes meetup geneva june 2021SebastienSEYMARC
 
OAuth2 - The Swiss Army Framework
OAuth2 - The Swiss Army FrameworkOAuth2 - The Swiss Army Framework
OAuth2 - The Swiss Army FrameworkBrent Shaffer
 
Embedding Messages and Video Calls in your apps
Embedding Messages and Video Calls in your appsEmbedding Messages and Video Calls in your apps
Embedding Messages and Video Calls in your appsCisco DevNet
 
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...Codemotion
 

Similar to Sømløs Identity - JavaZone 2017, 13. september 2017 (20)

Building cross platfrom solutions for enterprise - the mobileshow- may 2014
Building cross platfrom solutions for enterprise - the mobileshow- may 2014Building cross platfrom solutions for enterprise - the mobileshow- may 2014
Building cross platfrom solutions for enterprise - the mobileshow- may 2014
 
RICOH THETA x IoT Developers Contest : Cloud API Seminar
 RICOH THETA x IoT Developers Contest : Cloud API Seminar RICOH THETA x IoT Developers Contest : Cloud API Seminar
RICOH THETA x IoT Developers Contest : Cloud API Seminar
 
API Craft : Building Autodesk Forge APIs
API Craft : Building Autodesk Forge APIsAPI Craft : Building Autodesk Forge APIs
API Craft : Building Autodesk Forge APIs
 
Identity and o365 on Azure
Identity and o365 on AzureIdentity and o365 on Azure
Identity and o365 on Azure
 
Flash Platform for Devices
Flash Platform for DevicesFlash Platform for Devices
Flash Platform for Devices
 
Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup
Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup
Docker at SourceLair | Paris Kasidiaris | 1st Docker Crete Meetup
 
Mobile Payment Security with CA Rapid App Security
Mobile Payment Security with CA Rapid App SecurityMobile Payment Security with CA Rapid App Security
Mobile Payment Security with CA Rapid App Security
 
AppProxy.pdf
AppProxy.pdfAppProxy.pdf
AppProxy.pdf
 
Mihai Pricope
Mihai PricopeMihai Pricope
Mihai Pricope
 
CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011CloudEngine at Dev8D 2011
CloudEngine at Dev8D 2011
 
Enabling the Multi-Device Universe
Enabling the Multi-Device UniverseEnabling the Multi-Device Universe
Enabling the Multi-Device Universe
 
Flash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phonesFlash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phones
 
Apps with Apache Cordova and Phonegap
Apps with Apache Cordova and PhonegapApps with Apache Cordova and Phonegap
Apps with Apache Cordova and Phonegap
 
What have you learnt about technologies from the
What have you learnt about technologies from theWhat have you learnt about technologies from the
What have you learnt about technologies from the
 
Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...
Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...
Experts Live Switzerland 2017 - Automatisierte Docker Release Pipeline mit VS...
 
Developing with Adobe AIR
Developing with Adobe AIRDeveloping with Adobe AIR
Developing with Adobe AIR
 
Kubernetes meetup geneva june 2021
Kubernetes meetup geneva   june 2021Kubernetes meetup geneva   june 2021
Kubernetes meetup geneva june 2021
 
OAuth2 - The Swiss Army Framework
OAuth2 - The Swiss Army FrameworkOAuth2 - The Swiss Army Framework
OAuth2 - The Swiss Army Framework
 
Embedding Messages and Video Calls in your apps
Embedding Messages and Video Calls in your appsEmbedding Messages and Video Calls in your apps
Embedding Messages and Video Calls in your apps
 
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
 

Recently uploaded

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 

Recently uploaded (20)

Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 

Sømløs Identity - JavaZone 2017, 13. september 2017

Editor's Notes

  1. Hei og takk for at dere kom, og takk for at jeg fikk komme og snakke om noe jeg synes er veldig spennende Hvor mange er utviklere? Designere, prosjektledere/produkteiere? Det jeg skal snakke om i dag er noe som påvirker oss alle hver dag
  2. Hvem får litt angst når du ser en slik side? Nesten litt frekt å bli møtt med en hukommelsestest mens du er midt oppi det du egentlig skulle gjøre Vi skal gå litt i dybden på innlogging i dag og finne bedre måter å løse dette på
  3. Mitt navn er Henrik Walker Moe. Jobber i BEKK som utvikler og er over middels opptatt av UX (brukeropplevelse) Idag skal jeg lære bort det jeg kan om å lage gode sømløse innloggingsopplevelser Og som dere ser svever litt i skyene om dagen: skyløsninger, og systemutvikling innen luftfart hos Avinor
  4. Hva driver Avinor med? Statseid selskap som har ansvaret for all operativ logistikk på lufthavnene<klikk> Drifter alle Norges 45 sivile lufthavner<klikk> I fjor: 24,5 mill passasjerere som reiste innenlands<klikk> 51,5 mill passasjerere totalt inkl. utenland og offshore
  5. Jeg jobber i teamet «Eksterne kanaler» hos Avinor avinor.no (informasjon, bestille parkering, netthandel), Avinor App (reisefølge), EarlyBird (legacy) I tillegg en innloggingsløsning Min Profil som fungerer som autentiseringsserver (profil med kvitteringer, kontaktinformasjon, boardingkort) Røde tråden for i dag: Erfaringer under utvikling av autentiseringsserveren samt øvrige erfaringer på alle løsningene Hva er de unike utfordringene? Brukere i ulike kontekster: i sofaen, på beina, stresset. 60% er på mobile enheter Brukerne er innom 1 gang, så 1 sjanse til å gi en god opplevelse Stiller høye krav til sømløs brukeropplevelse = god reiseopplevelse
  6. Hvorfor tittelen «Sømløs Identity»? Autentiseringsserveren vår er det sentrale navet i appene våre. Den må oppleves som rask, robust og sikker. Hvis den oppleves som sømløs er gevinsten vår fornøyde og, kanskje aller viktigst, innloggede brukere Hva mener du er nøkkelen til «Sømløs Identity»? <neste slide>
  7. UX må drive fram de tekniske kravene Uten god UX er det vanskelig å få glade og motiverte brukere Kan ha knallgod og knallsikker teknisk løsning men hjelper lite uten god UX Skal snakke om erfaringer, delt opp i 3 områder <klikk>
  8. Hvilke UX-utfordringer har vi for innloggingsopplevelsen? Hvordan kan vi motivere brukeren til å logge inn? Hva består en god innloggingsopplevelse av? Hvilke rammeverk og biblioteker har vi brukt i appene våre? Hvilke skytjenester har vi for IDaaS i dag? Hvilke løsninger tilbyr skyen for B2B- og B2C-innlogging (dvs ansatte og sluttbrukere)? Finnes det begrensninger i disse tjenestene som gjør sømløs innlogging vanskelig?
  9. Hva er ditt mål for i dag? Lær av erfaringene våre, og ta med hjem håndfaste tips, løsninger eller ideer fra idag For alle: utviklere og ikke-tekniske: designere, produkteiere
  10. 8 min Hvilke premisser har vi for å skape gode innloggingsopplevelser?
  11. <pust> Vi vet at ved å redusere antall valgmuligheter så reduseres kognitiv belastning Finner innhold lettere Fullfører oppgaver raskere Dette gir brukeren økt måloppnåelse og dermed en lykkefølelse
  12. <pust> Og Hick’s Law forteller oss at mange valgmuligheter i skjermbildene øker tiden det tar brukeren å foreta et valg Ser vi på tid som valuta så er brukeren gjerrig og ønsker å bruke så lite penger som mulig. Blakker vi brukeren risikerer vi en irritert bruker som kan forlate nettsiden. En bruker som derimot har mye penger igjen kan gå videre til neste mål på nettsiden din Fokusert interaksjonsdesign. Fjern støyende elementer slik at bruker kan nå måloppnåelse raskest mulig
  13. Dette er et typisk brukernavn og passord innloggingsskjermbilde Hva hvis man glemmer passord, eller verre: eposten En slik løsning kan bli OK. Men vi vet også fordelene med færre valgmuligheter og færre ting å ta stilling til og huske… raskere vei igjennom innlogging vil oftest være bedre For å ta et eksempel fra den positive enden av UX-skalaen..<klikk>
  14. Her ser vi PayPal sin innloggingsside. Enkelt, ryddig design Å lage god UX virker veldig enkelt, men det er vanskelig La oss se på EarlyBird og hvordan vi valgte å løse innlogging der
  15. Driverne for interaksjonsdesignet her har vært fokus på holde skjermbildet enkelt, gi insentiver. Skjul alt annet av ekstra linker og innhold under «the fold» Mobilnummer og sms-kode som autentiseringsmekanisme. Slipper å huske passord! Brukere er på mobile enheter og passord oppleves som vanskelig (har brukertestet) Ett skjermbilde hvor vi ber om en ting og ett call-to-action Fordelen med det: bruker får rask feedback og god måloppnåelse fordi hvert steg går fort å gjennomføre Ofte brukt interaksjonsdesignpattern hos oss. Be om litt og litt brukerinformasjon over flere skjermbilder, enn en vegg med mange påkrevde skjemafelter
  16. Et viktig prinsipp er at et design kan alltids bli bedre. Ofte kan veldig enkle tekniske grep forbedre interaksjonen drastisk. Når vi skal skrive inn mobilnummeret her, hvordan kan vi hjelpe brukeren for å øke hastigheten på måloppnåelsen? HTML5 ga oss inputhjelp på mobilenheter som gjør at bruker kan skrive raskere <klikk> Egen «input type» for telefonnumre, type=tel. Type=email. Veldig deilig hvis du har en lang epostadresse! HTML5-attributtene er veldig lavthengende frukter Vil gi umiddelbart raskere måloppnåelse for brukeren, lav risiko Vi har sett her et eksempel på innlogging til EarlyBird. Viktig med god sømløs on-boardingsopplevelse under innloggingen slik at brukeren går fra å være besøkende til å logge inn og bli konvertert bruker. Oppsummert om on-boarding kan vi si<klikk>
  17. <klikk>Ryddig interaksjonsdesign,<klikk>Gi gode insentiver,<klikk>Fjern tekniske hindre,<klikk>Rask feedback Etter fullført on-boarding er neste oppgave, hvis du f.eks. driver en nettbutikk, å gi kjøpsinsentiver slik at man kan konvertere brukeren til kjøpende kunde Viktig å huske at on-boarding er en kontinuerlig iterativ prosess hvor man må måle, justere og måle igjen. Vi bruker Google Analytics til å måle «bounce rate», slik at vi lærer hva som virker og ikke virker. A/B-testing Viktig nøkkel for å lage best mulig design for on-boardingen er å forstå brukers kontekst
  18. 19 min <klikk>Er brukerne på beina, i aktivitet, i en kjøpsprosess eller på en reisefot? Finn kontekstene <klikk>Når du forstår kontekstene, lag en skreddersydd on-boardingopplevelse for innloggingen <klikk>Kan brukerne være i flere kontekster, lag flere innloggingskjermbilder slik at hver kontekst har en skreddersydd on-boardingopplevelse Jeg skal vise dere hva jeg mener med kontekster og on-boarding ved å vise noen eksempler fra Avinor appen
  19. 20:30 min, halvveis på tid!. Avinor appen for iPhone i App Store, og Android i Google Play Kontekst: Nettopp lastet ned appen Vi vil se en on-boarding som fokuserer på å vise verdien appen gir deg som din reisefølge
  20. Appen vil gi deg rask og enkel tilgang til informasjon, Du kan følge flighter og få pushvarsel ved endringer Gode skjermbilder, fokusert ledetekster
  21. Ledetekst og call-to-action er tydelig, og positivt ladet – kom i gang!
  22. Kontekst: ikke-innlogget bruker – ønsker å lage en profil for å f.eks. angi reg.nr hvis du skal parkere bilen din på en lufthavn (skyte inn: kan fortsatt bruke appen uten brukerprofil)
  23. Vi klikker på «Registrer mobilnummer» Enklere on-boarding fordi du allerede har appen Fokuserer på at mobilnummeret er alt som trengs – enkelt å lage en bruker! Ingen store skjema med vegg av påkrevde felter
  24. Kontekst: ønsker å følge en flight for å få abonnere på endringer, f.eks. ny gate, forsinkelser osv. Vi klikker på Ny reise og finner en flight som vi ønsker å følge
  25. Vi klikker på Følg denne flighten Her ser vi den tredje varianten av teknisk sett samme innlogging i samme app, men i en litt annet kontekst og variant enn de foregående eksemplene
  26. Tydelig ledetekst og call-to-action On-boardingen fokuserer på funksjonaliteten du får tilgang til når du logger inn
  27. Vi fokuserer vi på hva som gir brukerverdi: rask tilgang på viktig informasjon, transportpriser på buss/taxi, praktisk info for din destinasjon..<klikk>
  28. Eller relevante tilbud på lufthavnene du befinner deg på Å styre innloggingen slik vi har sett med flere kontekster og variere on-boardingen, gir en brukeren skreddersydd opplevelse. Det er noe våre brukerne responderer veldig positivt på. Vi lager ikke slik on-boarding for alle tjenestene våre. Det blir oftest heller bestemt ut ifra behovet til å ha en innlogget bruker i tjenesten. Det var det viktigste jeg hadde å si om brukerkontekster og on-boarding La oss se nærmere på det tekniske<klikk>
  29. 22:30 min …og hvilke erfaringer vi har gjort oss på å håndtere Identity/autentisering i løsningene våre Ikke vær redd hvis du ikke skjønner all koden, hensikten er bare å vise muligheter
  30. Arkitekturen ser ofte slik ut: Front-end separat applikasjon fra back-end API-applikasjonen. API sørger for å persistere data basert på ønsket forretningslogikk for applikasjonens domene Hva fokuserer vi på i dag? <klikk> Erfaringer på front-end er enklest for oss å dele med andre fordi her har vi mest i felles med andre prosjekter Hvilke rammeverk og biblioteker bruker vi på front-end om dagen?
  31. Byggeklossene våre front-end apper består av er:<klikk> React med: Redux Redux-auth-wrapper for å styre tilganger (autorisasjon) på sider/routes Redux-oidc for OpenID Connect autentisering med Implicit Flow (redirect fram/tilbake med JWT) Bruker oidc-client.js fra IdentityModel. Frittstående JS-rammeverk. Gjør stille-reautentisering av bruker, gjør alt av autentiseringsforespørsler – veldig bra!
  32. Liker med redux-auth-wrapper: Sikkerhetsdokumentasjon i kode. Her ser vi alle sidene (routes) i en React app med tilgangsstyring i kode UserIsAuthenticated og UserIsAdmin Vi hadde nok ikke hatt en like sømløs autentisering i React-appene våre hadde det ikke vært for at kombinasjonen av React/redux, redux-auth-wrapper og redux-oidc fungerer bra sammen. <pust> Har man flere apper burde man håndtere autentiseringen i front-enden likt: Kompetansen og erfaringen hos utviklerne lett kan overføres Forbedringer kan fritt overføres til flere apper Utviklerne kan lettere context switche mellom apper
  33. I demoen av Avinor appen tidligere viste jeg flere brukerkontekster som styrte bruker til forskjellige on-boardingsopplevelser<klikk> Her ser vi et konfigurasjonseksempel med oidc-client.js for å få til det vi gjør. Dette biblioteket gjør selve autentiseringen mot autentiseringsserveren acr_values: Authentication Context Class Reference values Klientapplikasjonen forteller autentiseringsserveren at disse parameterne skal brukes i autentiseringskonteksten for akkurat denne autentiseringsforespørselen Ved å sende med parameter for kontekst, språk m.fl. kan våre klientapplikasjoner diktere hva slags on-boardingsopplevelse brukeren får under innlogging Skal IKKE brukes til å påvirke selve autentiseringserverens indre mekanismer for autentisering. Kun påvirke «look & feel» under innlogging på autentiseringsserveren Hva verdiene er og hva de gjør bestemmer du helt selv i klientapplikasjonen og på autentiseringsserveren din. Vi eier begge deler og står fritt til å lage våre egne standarder her
  34. For å illustrere hvor kraftig verktøy acr_values kan være…. Vi har 2 autentiseringsmekanismer vi bestemmer pr klientapplikasjon Brukernavn og passord Mobilnummer med sms-kode Vi kan i tillegg, for hver av disse klientapplikasjonene, styre innloggingsopplevelser basert på kontekst med å sende med info i acr_values. (hvis tid): Skal man høyne sikkerheten kan man kjøre en step up autentisering fra mob.nr og smskode, til ny faktor: passord, app-kode Brukere responderer veldig positivt til høy grad av skreddersydde opplevelser fordi de føler seg forstått, og for innloggingsløsninger er dette en viktig nøkkel til sømløs innlogging
  35. 29 min Vi har sett på hva som skal til for å gjøre innloggingsopplevelsen «sømløs» i kode. Gitt du har kontroll over klientapplikasjonen og autentiseringsserveren kan du få til mye. Men kan vi bruke en skyleverandør som tilbyr IDaaS til å få til noe av det vi har sett her i dag? La oss først se på fordeler og ulemper med å velge en IDaaS-tjeneste
  36. Fordeler: <klikk...>Outsourcer driftingen og abonnerer i stedet på autentiserings- og Identity Management-tjeneste Eksperter tar seg av det tekniske – sikrere? Leverandøren har SLA for å garantere tjenestekvalitet Ofte noen form for enkel tilpasning av HTML/CSS i ett innloggingskjermbilde Ulemper Produktifiserte og begrensede – driftsmargin de tar Enkel konfigurasjon, avansert funksjonalitet koster eller ikke mulig Gir bort full kontroll over konfigurasjon og data vs å hoste egen løsning Ikke full sertifisering for alle autentiseringsmåter i OpenID Connect & Oauth 2.0. (OpenID Foundation) Forenklet tilpasning av innloggingskjermbildet ofte ikke bra nok. JavaScript-støtte mangelfull Konklusjonen min er at velger man en skytjeneste så gir du bort muligheten til å lage beste mulige innloggingsopplevelsen, men du får så klart de åpenbare fordelene en skytjeneste gir. En POC vil være helt nødvendig slik at du avdekker behov og evt. mangler i tjenestene
  37. I det norske markedet ser jeg at populære leverandører av IDaaS er<klikk>: Azure AD – B2B/ansatte, moden og solid tjeneste for Active Directory integrasjon med on-prem. Innlogging via ADFS. Azure AD B2C – For dine sluttbrukere, ikke rik på funksjonalitet men vokser raskt Auth0 – Både B2B og B2C. Flere: AWS, Google Identity, PingIdentity m.fl.<klikk> Se min bloggpost på open.bekk.no for flere detaljer rundt disse leverandørene På Avinor så vi tidlig at IDaaS-tjenester ga oss begrensinger på UX som var showstoppere (hvilke: skreddersydd on-boarding, full kontroll på autentiseringsserveren) Så hvis skytjenester ikke er for deg…. <klikk>
  38. Stiller krav til ekspertise men får full kontroll og kan lage best mulig løsning<klikk>: Spring (Java) – ikke OpenID-sertifiserte men populært rammeverk man kan bygge ut med OpenID Connect-støtte for å sikre applikasjoner, API’er og lage egen autentiseringsserver IdentityServer (.Net og .Net Core v4) – OpenID-sertifiserte og mest populære open-source .Net-rammeverket for å lage egen OpenID Connect & Oauth 2.0 autentiseringsserver. På Github og open-source Node OIDC-Provider (JS)– Full OpenID-sertifisering for alle OIDC-autentiseringsmåter, som er imponerende! Liker du JS/node så er kanskje denne verdt en kikk. På Github og open-source Hvis du har valgt å lage en egen autentiseringsserver så skal det finnes et rammeverk som passer for deg. Fortsatt viktig å avdekke behov, spesielt med tanke på krav til UX
  39. 35 min <klikk> UX må drive fram og styre teknologikravene. On-boardingen må være smertefri og målrettet Forstå brukers kontekst slik at du kan lage skreddersydde innloggingsopplevelser I React-appene våre fungerer redux-auth-wrapper- og redux-oidc bibliotekene ypperlig. Autentisering er lett å konfigurere, håndteringen av innlogget bruker i appen er ryddig og vi kan sende bruker til skreddersydd on-boarding ved hjelp av acr_values Det finnes IDaaS-tjenester idag for innlogging av B2B- og B2C-brukere. B2B-verden er mest moden men ofte begrenset på UX-muligheter. For B2C-segmentet og dine sluttbrukere er Azure AD B2C ung men lovende. Auth0 er også solid på B2B og B2C. Hvis du finner begrensninger i IDaaS-tjenestene - gjør det selv hvis du behersker de tekniske utfordringene det valget medfører
  40. Og til slutt…. Jeg vet at autentisering kan være et komplekst domene Her ser vi cockpiten til romfergen Endeavour og mange små knapper med store konsekvenser. Trikset for å lande trygt er å vite hvilke man bør trykke på… slik er det også med innloggingsløsninger Jeg håper jeg har fått satt søkelyset på noen knapper her i dag så uansett hvilken rolle du har så håper jeg du har fått noen konkrete tips, teknikker eller ideer som du kan ta med hjem – slik at din løsning blir hakket mer sømløs for dine brukere Hvis dere har spørsmål kom gjerne bort til podiet etterpå.
  41. Takk for at dere kom og ha en flott JavaZone videre! Takk for meg!