# GoogleAuth

## Alapok

A wikiben részletezett többi megoldáshoz képest ez a fejezet kilóg a sorból, hiszen ez a megoldás "a federáción" belül csak egy Identity Providert használ - a google központi kapuját. Ezt bárki használhatja a saját szolgáltatásában (SP) történő felhasználó-hitelesítésére, természetesen annyi megszorítás van, hogy az adott felhasználóknak rendelkezniük kell Google Accounttal (gmail-es e-mail címmel).

A google ekkor 2.0-ás szabványú OpenID protokoll szerint működő OpenID IdP-ként viselkedik, emellett támogatja az OpenID Attribute Exchange 1.0 alapú attribútum kiadást, így ha a felhasználó az autentikáció során hozzájárul a felsorolt adatainak az SP részére történő kiadásához, akkor azt a google ki is adja. (A kiadható attribútumok köre korántsem teljes, lévén jelenleg egyedül az e-mail cím kiadatására van lehetősége az SP-nek)

## Beállítás

Az autentikációhoz használt google-végpont a

[https://www.google.com/accounts/o8/id](https://www.google.com/accounts/o8/id)

címen érhető el, a megfelelő paramétereket ide kell átadni.

### Rendelkezésre álló paraméterek


|**openid.ns** |Kötelező - a használandó OpenID protokollt definiálja, ajánlott érték: "[http://specs.openid.net/auth/2.0](http://specs.openid.net/auth/2.0)"  |
|---|---|
|**openid.claimed_id**  | Opcionális - a kérelem típusát azonosítja, ajánlott érték: "[http://specs.openid.net/auth/2.0/identifier_select](http://specs.openid.net/auth/2.0/identifier_select)"  |
|**openid.identity** |Opcionális, egy alternatív azonosítót definiál, ajánlott érték: "[http://specs.openid.net/auth/2.0/identifier_select](http://specs.openid.net/auth/2.0/identifier_select)"  |
|**openid.return_to** |Kötelező - azt az oldalt definiálja, amelyre a google visszairányít az autentikáció után. Támogatott http és https protokollú visszatérő oldal egyaránt.  |
|**openid.realm** |Opcionális - azt a domaint definiálja, amelyre a felhasználót a google-el autentikáltatni szeretnénk. Alapértelmezés szerint az openid.return_to-nál megadott honlapra mutat. Amennyiben megadásra kerül, akkor a domainnek mindenképp egyeznie kell az openid.return_to domainnevével.  |
|**openid.assoc_handle** |Opcionális - részletes ismetető: [http://openid.net/specs/openid-authentication-2_0.html#associations](http://openid.net/specs/openid-authentication-2_0.html#associations)  |
|**openid.mode** |Kötelező - a kérés módját adja meg, a két lehetséges érték: "checkid_immediate" (szinkron kommunikáció)  "checkid_setup" (aszinkron kommunkikáció)  |
|**openid.ns.ext1** |Opcionális (attribútum kiadatáskor kötelező) - ajánlott érték: "[http://openid.net/srv/ax/1.0](http://openid.net/srv/ax/1.0)"  |
|**openid.ext1.mode** |Opcionális (attribútum kiadatáskor kötelező) - ajánlott érték: "fetch_request"  |
|**openid.ext1.type.email** |Opcionális (attribútum kiadatáskor kötelező) - ajánlott érték: "[http://axschema.org/contact/email](http://axschema.org/contact/email)"   |
|**openid.ext1.required** |Opcionális (attribútum kiadatáskor kötelező) - ajánlott érték: "email" (Jelenleg csak az email attribútum elérhető)  |


### Minta kérés
Az alábbi kérés igényli az email-cím attribútum kiadását is

	https://www.google.com/accounts/o8/ud
	?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0
	&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select
	&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select
	&openid.return_to=http%3A%2F%2Fwww.example.com%2Fcheckauth
	&openid.realm=http%3A%2F%2Fwww.example.com%2F
	&openid.assoc_handle=ABSmpf6DNMw
	&openid.mode=checkid_setup
	&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0
	&openid.ext1.mode=fetch_request
	&openid.ext1.type.email=http%3A%2F%2Faxschema.org%2Fcontact%2Femail
	&openid.ext1.required=email

### Minta válasz sikeres autentikáció esetén

	http://www.example.com:8080/checkauth
	?openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0
	&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fud
	&openid.response_nonce=2008-09-18T04%3A14%3A41Zt6shNlcz-MBdaw
	&openid.return_to=http%3A%2F%2Fwww.example.com%3A8080%2Fcheckauth
	&openid.assoc_handle=ABSmpf6DNMw
	&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cext1.mode%2Cext1.type.email%2Cext1.value.email
	&openid.sig=s%2FgfiWSVLBQcmkjvsKvbIShczH2NOisjzBLZOsfizkI%3D
	&openid.identity=https%3A%2F %2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DACyQatixLeLODscWvwqsCXWQ2sa3RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U
	&openid.claimed_id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DACyQatixLeLODscWvwqsCXWQ2sa3RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U
	&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0
	&openid.ext1.mode=fetch_response
	&openid.ext1.type.email=http%3A%2F%2Faxschema.org%2Fcontact%2Femail
	&openid.ext1.value.email=fred.example%40gmail.com

### Minta választ sikertelen autentikáció esetén

	http://www.example.com/checkauth
	?openid.mode=cancel
	&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0

### Válaszok feldolgozása

A megfelelő kérés elküldése után a rendszer átirányít a google autentikációs oldalára, ahol a felhasználónak meg kell adnia google accounttal kapcsolatos adatait, majd sikeres bejelentkezés után jóvá kell hagynia, hogy a SP részére a google átadja az információt, hogy bejelentkezett ill. az egyéb attribútumokat, melyeket adott esetben az SP igényelt. Pozitív válasz esetén a google beállítva a megfelelő értékeket meghívja a visszatérő oldalt, ahol a megfelelő GET paraméterek feldolgozásával már SP-hatáskörben irányíthatók tovább a felhasználók.

## Külső hivatkozások

* [http://code.google.com/intl/hu-HU/apis/accounts/docs/OpenID.html](http://code.google.com/intl/hu-HU/apis/accounts/docs/OpenID.html)