Vyhledávání na webu

Přístup Javascriptu k fragmentu URL v hlavičce Location pro OAuth 2


Implicitní grant OAuth 2.0 (http://tools.ietf.org/html/draft-ietf-oauth-v2-31#section-4.2) zahrnuje zajímavou choreografii mezi klientskou aplikací, prohlížečem a autorizačním serverem. Autorizační server vrací prohlížeči stavový kód HTTP 302 s hlavičkou Location takto:

Umístění: http://clientapp.com/cb#access_token=2YotnFZFEjr1zCsicMWpAA&state=xyz&token_type=example&expires_in=3600

Prohlížeč odstraní fragment před provedením přesměrování a služba na adrese clientapp.com/cb by měla odpovědět [dle specifikace] „webovou stránkou (obvykle HTML dokumentem s vloženým skriptem) schopnou přistupovat k celé URI přesměrování včetně fragmentu uchovaného uživatelským agentem a extrahovat přístupový token (a další parametry) obsažené v fragmentu“.

Implementoval jsem část tohoto řešení, která se týká autorizačního serveru, ale mám velmi malou zkušenost s JavaScriptem. Jak dostat JavaScript k fragmentu, který prohlížeč odstranil před přesměrováním?

Díky,
Michael

Odpověď č. 1

Zkuste něco takového (pochází z tohoto německého článku):

<script>
   var fragmentString = location.hash.substr(1);
   var fragment = {};
   var fragmentItemStrings = fragmentString.split('&');
   for (var i in fragmentItemStrings) {
     var fragmentItem = fragmentItemStrings[i].split('=');
     if (fragmentItem.length !== 2) {
       continue;
     }
     fragment[fragmentItem[0]] = fragmentItem[1];
   }
</script>

Pak můžete odkazovat na svůj přístupový token pomocí fragment['access_token'].