Hej,
Vi har kollat mer och har lite funderingar/frågor/diskusionspunkter.
/Anders
OP access
När jag ska implementera min egen RP vill jag komma åt OP interfacet. Om
jag förstått korrekt så är openid API:et exponerat på op:5000, men där har
jag gått bet. Jag har försökt lite olika lösningar men tyvärr utan
framgång. Se nedan.
/etc/hosts
Jag har entrys för både 172.16.20.1/24 och localhost för demo.seleg_dev
medan rp och op har 172.16.20/24 adresser. Vilken är det som gäller?
routing
För att komma åt op:5000 behövs ju antingen port forwarding eller routing,
men jag ser ingen av dem genom att kolla *docker ps* eller routing-tabellen
(OSX + docker beta).
Exponera op:5000 pss som 80
Jag har inte hållt på med docker förut, men jag eftersom jag har problem
att connecta till 5000 för att komma åt OP, så har jag patchat op i
compose.yml med en ports: *- “5000:5000”*. Jag är osäker på om det är rätt
sätt, men eftersom min webapp behöver komma åt denna så ser jag inget annat
sätt just nu.
ports:
- "5000:5000"
Vilket protokoll används?
Efter compose.yml fixen lyckas jag få igång en lyssnare, men när jag
försöker prata HTTP eller HTTPS med den får jag bara timeout. Har provat
att connecta både från min egna maskin samt lokalt på docker-maskinen mha
*nc* och prata HTTP på kommandorad. Ingen av kan trigga ett svar från
op:5000 vilket gör mig förvirrad. Vad kör vi för protokoll på 5000?
OpenID Connect implementationen
Detta kapitel innehåller några funderingar till Open ID connect i se-leg.
Eftersom jag inte kunnat köra med min egen RP än så är vissa av punkterna
suspects och samtliga punkter är diskussionspunkter, inte korrigeringar
eller buggrapporter.
Flow
Enligt intiala dokumentationen så är det Implicit flow som ska
implementeras, men eftersom *response_mode* är med måste det vara
Autorization Code Flow, eftersom den bara får vara med i det flödet.
Auth req
Detta exempel har jag tagit från en logfil hos docker-maskinen.
{
"claims": {
"userinfo": {
"identity": null
}
},
"client_id": "client1",
"nonce": "d5c36519-0253-4f31-b999-bb7ea5191293",
"redirect_uri": "http://rp:5000/authorization-response",
"response_mode": "query"
"response_type": "code id_token token"
"scope": [
"openid"
],
"state": "a2a89f4c-0271-465b-bca6-4bc1a95e1823"
}
Kommentarer
Vissa av delarna stämmer inte överens med specifikationen enligt min
tolkning.
repsonse_mode (query)
Eftersom *query* är default (?) är denna NOT RECOMMENDED
response_type
Enligt
http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#Combinati…
får inte *“code id_token token”* använda sig av query *response_mode*.
Successful Authentication Response (3.1.2.5)
Det står att parametrarna MÅSTE returneras som query parameterar. Fast i
se-leg flödet är det väl här som OP’s backend anropas RP’s backend med code
och state? Har jag missuppfattat flödet eller specen (det kanske svaras i
mailet som svarar på mina första frågor)?
mån 20 juni 2016 kl 07:55 skrev Anders Gembäck <anders at diglias.com>:
Hej,
För att helt förstå flödet skulle vi vilja ha:
* En mer uppdaterad bild av denna:
https://github.com/SUNET/se-leg-docs/blob/master/proofing-skiss.png
* Ett sekvensdiagram med alla steg.
* En koppling mellan sekvensdiagrammet, den uppdaterade bilden och OpenID
Connect flödet enligt specifikationen, gärna med exempel.
mvh
Anders Gembäck