Tutorial: Simples Publishing einer Webanwendung mit OpenID Connect und Google

So kann ein simples Publishing einer Webanwendung mit OpenID Connect und Google (als Authorization Server) aussehen. Das wurde zwar schon dutzendfach beschrieben, aber hier kurz Step-By-Step und so einfach wie möglich gehalten. Das Beispiel hat man in unter einer Stunde komplett durch, verspricht uns Maximilian Leimgruber, der dieses Tutorial erarbeitete.
OpenID Connect baut auf dem OAuth 2.0-Protokoll auf, welches Mechanismen zum Beziehen und Verwenden von Token für den Zugriff auf geschützte Ressourcen verwendet. Es ist primär gedacht für auf Server gehostete Webanwendungen, auf die mit einem Browser zugegriffen wird.

1.) Hintergründe und Links

http://openid.net/connect/
http://wiki.openid.net/w/file/fetch/80030063/OpenID_Connect_Overview_May_5_2014.pdf
https://developers.google.com/identity/protocols/OpenIDConnect
https://www.citrix.com/blogs/2015/09/11/openid-connectoauth-2-0-integration-with-xenapp-through-unified-gateway/

Traffic Flow

2.) Google Developer Account erstellen

– Diesen kann man ein Jahr lang kostenlos nutzen, muss aber seine Kreditkarte hinterlegen.

3. Auf Google im ApiManager einen neuen Account erstellen

– Dazu auf https://console.developers.google.com/apis/credentials gehen, mit Dev Account anmelden und auf “Anmeldedaten erstellen” klicken.

– Unter JS Quellen die URI eingeben und unter Weiterleitungs URIs das gleiche mit dem Pfad /oauth/login

– Das liefert euch die benötigte Client ID und den Client Schlüssel (merken!)

4.) NetScaler-Konfiguration

– Dafür sorgen, dass der NetScaler Google erreichen kann (FW, Routing)!
– Extern erreichbaren Content Switch vServer anlegen (DNS, IP, Zertifikat, FW,…)
– CS Policy anlegen, die auf LB vServer zeigt, der wiederum den Webserver als Service gebunden hat (FW!)
– AAA vServer anlegen (benötigt keine externe IP und kein DNS,…)
– Auf Load Balancer Authentication aktivieren (der Authentication Host kann ein Dummy sein; muss nicht erreichbar sein)
add lb vserver lb_vs_web_red_app01 HTTP 0.0.0.0 0 -persistenceType NONE -cltTimeout 180 -AuthenticationHost auth.test -Authentication ON -authnVsName aaa_vs_oidc_test
– OAuth / OpenID Connect Authentication Policy anlegen und auf vServer binden

– Genauer:
Client ID: Von Google kopiert. Siehe 2.)
Client Secret:. Siehe 2.)
Authorization Endpoint: https://accounts.google.com/o/oauth2/auth?client_id=DEINECLIENTID&response_type=code&scope=openid%20email
Token Endpoint: https://accounts.google.com/o/oauth2/token
ID Token Decryption Endpoint: https://www.googleapis.com/oauth2/v1/tokeninfo

add authentication OAuthAction oauthTest -authorizationEndpoint "https://accounts.google.com/o/oauth2/auth?client_id=XXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com&response_type=code&scope=openid%20email" -tokenEndpoint "https://accounts.google.com/o/oauth2/token" -idtokenDecryptEndpoint "https://www.googleapis.com/oauth2/v1/tokeninfo" -clientID XXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com -clientSecret XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -encrypted -encryptmethod ENCMTHD_3

 

5.) Testen

https://app01.workplace.provectus-lab.de/ aufrufen
– Man wird weitergeleitet an Google
– Dort kann man sich mit jedem beliebigen (hier Trashmail Account; nicht der meines Dev) anmelden

– Und schwupps ist man auf der Website! (wenn man kein SSO braucht; ansonsten kann man das oidc Spiel natürlich auch ein zweites Mal spielen; also zwischen webapp und google und den gleichen security Kontext verwenden)

Facebook
Twitter
LinkedIn
WhatsApp