Einbindung geschützter Dienste in Webanwendungen
Beabsichtigen Sie unsere geschützten Dienste innerhalb Ihrer Webanwendung einzusetzen, können Sie als registrierter Benutzer einen Applikationsschlüssel beantragen. Wenden Sie sich dazu an das Dienstleistungszentrum. Nach Erhalt des Applikationsschlüssels können Sie Ihre Anwendung mit den für Sie freigeschaltenen Diensten konfigurieren.
Egal ob Sie die BKG WebMap oder Ihr eigenes Framework als Grundlage für Ihre Webanwendung verwenden, es stehen Ihnen immer die folgenden beiden Optionen zur Verfügung den Applikationsschlüssel zur Authentifizierung geschützter Dienste einzusetzen:
-
Verwendung einer SessionID per Cookie zur Authentifizierung
Hierbei wird innerhalb der Browsersitzung ein Cookie gesetzt, welches zur Authentifzierung herangezogen wird. Dies setzt voraus, dass Drittanbietercookies für die Domain sg.geodatenzentrum.de im Browser zugelassen sind. Beim Aufruf der Dienste ist nichts weiter zu beachten. -
Verwendung einer SessionID per URL zur Authentifizierung
Bei der Initialisierung der Anwendung muss ein Session-Token generiert werden, welches beim Aufruf der geschützten Dienste angegeben werden muss. Dieses Token ist für einen begrenzten Zeitraum gültig. Im Gegensatz zu den Session-Cookies sind keine gesonderten Browsereinstellungen vorzunehmen.
BKG WebMap mit SessionID per Cookie
Der Applikationsschlüssel muss beim Aufruf der Javascript-Bibliothek im URL-Parameter bkg_appid übergeben werden:
<script type="text/javascript" src="https://sg.geodatenzentrum.de/web_bkg_webmap/lib/bkgwebmap-0.12.5.js?bkg_appid=IHR_API_KEY" charset="utf-8"></script>
BKG WebMap mit SessionID per URL
Der Applikationsschlüssel und die Domain der Anwendung müssen in den folgenden JavaScipt-Varaiblen definiert werden:
<script type="text/javascript"> BKGWebMap.APP_ID = "IHR_API_KEY"; BKGWebMap.APP_DOMAIN = "IHRE_APP_DOMAIN"; </script>
Eigenes Framework mit SessionID per Cookie
Bei der Verwendung Ihres eigenen Frameworks zur Erstellung der Webanwendung, können Sie die SessionID per Cookie über folgende Leerdateien initialisieren:
-
CSS-Variante:
<link rel="stylesheet" href="http://sg.geodatenzentrum.de/web_bkg_webmap/bkg_maps.css?bkg_appid=IHR_API_KEY"/>
-
JS-Variante:
<script type="text/javascript" src="http://sg.geodatenzentrum.de/web_bkg_webmap/lib/bkg_maps.js?bkg_appid=IHR_API_KEY" charset="utf-8"></script>
Eigenes Framework mit SessionID per URL
Bei der Initialisierung der Webanwendung muss die SessionID generiert werden. Dies erfolgt durch den Aufruf folgender URL: https://sg.geodatenzentrum.de/gdz_getSession?bkg_appid=IHR_API_KEY&domain=IHRE_APP_DOMAIN. Die Antwort dieses Aufrufs liefert die SessionID.
Die SessionID kann nun zum Aufruf geschützter Dienste in der URL direkt hinter dem Dienstname (erstes
Pfadsegment) durch __ angegeben werden: http://sg.geodatenzentrum.de/NAME-DIENST__SESSIONID...
Beispiele:
- http://sg.geodatenzentrum.de/wms_webatlasde__SESSIONID?SERVICE=WMS&REQUEST=GetMap...
- http://sg.geodatenzentrum.de/wmts_dop__ID/tile/1.0.0/rgb/default/DE_EPSG_25832_DOP/12/969/1228.png
Im Folgenden sei eine exemplarische Implementierung unter OpenLayers 2 gezeigt:
function getSessionToken(appId , appDomain) { try { var request = OpenLayers.Request.GET({ url: "http://sg.geodatenzentrum.de/gdz_getSession", params: {bkg_appid: appId, domain: appDomain}, async: false }); if (request.status !== 200) { console.log("Problem bei der Session-Initialisierung: " + request.responseText); return "n.a."; } return request.responseText; } catch (err) { console.log(err); return "n.a."; } } var session = getSessionToken(API_KEY, API_DOMAIN); var webatlasde = new OpenLayers.Layer.WMS( "WebAtlasDE", "http://sg.geodatenzentrum.de/wms_webatlasde__" + session, { layers: 'webatlasde' }, { isBaseLayer: true, attribution: '© GeoBasis-DE / BKG 2017' } );