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 folgende Option zur Verfügung den Applikationsschlüssel zur Authentifizierung geschützter Dienste einzusetzen:

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 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 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:

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' }
  );