Um mit der Forge-Platform kommunizieren zu können, werden Zugangsdaten benötigt.
Dieses Posting beschreibt wie diese sehr wichtigen und auch sicherheitsrelevanten Daten gespeichert werden können.
Zunächst ist es wichtig zu verstehen, dass zwischen einer Client-Anwendung und einer Server-Anwendung unterschieden werden muss.
In der Client-Anwendung, hier eine Windows oder CAD-Anwendung, werden nur die Daten die die Server-Anwendung bereitstellt in einem Dialog dargestellt. Die gesamte Kommunikation mit der Forge-Platform geschieht ausschließlich in der Server-Anwendung. Diese Vorgehensweise ist aus sicherheitsrelevanter Sicht sehr wichtig, da alle Zugangsdaten NICHT der Client-Anwendung bekannt ist.
Das nebenstehende Bild verdeutlich diese Vorgehensweise.
Die gesamte Kommunikation mit der Forge Platform geschieht ausschließlich über einen Webservice, der in der eigenen Netzwerkumgebung des Unternehmens etabliert wird.
public static class Credentials { <add key="CP.Forge.ClientID" value="[Your Client ID]"/> <add key="CP.Forge.ClientSecret" value="[Your Client Secret ID]"/> <add key="CP.Forge.CompanyAccountID" value="[Your Company Account ID]"/> <add key="CP.Forge.AppName" value="[Your Applikation Name]"/> <add key="CP.Forge.CallBackUrl" value="[Your Callback URL]"/> }
In einer öffentlichen statischen Klasse, innerhalb der Webservice Applikation, werden die Daten abgelegt.
Diese Vorgehensweise ist nicht optimal, wenn nicht sogar sicherheitstechnisch sehr bedenklich, da die Daten hard codiert wurden und somit sichtbar sind.
Also nicht zu empfehlen.
<appSettings> <add key="CP.Forge.BaseURL" value="https://developer.api.autodesk.com"/> <add key="CP.Forge.Database.ServerName" value="[MS SQL-Server Name]"/> <add key="CP.Forge.Database.DataSource" value="[DataSource Name"/> <add key="CP.Forge.ClientID" value="[Your Client ID]"/> <add key="CP.Forge.ClientSecret" value="[Your Client Secret ID]"/> <add key="CP.Forge.CompanyAccountID" value="[Your Company Account ID]"/> <add key="CP.Forge.AppName" value="[Your Applikation Name]"/> <add key="CP.Forge.CallBackUrl" value="[Your Callback URL]"/> </appSettings>
Eine sichere Methode, die Zugangsdaten für Ihren Forge-Account zu speichern, ist das Ablegen in die Web.Config Datei. Diese kann nicht einfach ausgelesen werden, dazu benötigt man einen Administrator-Zugang zu Ihrer Website Dateiablage. Diese ist in der Regel Passwort geschützt.
In Ihrer Webservice-Anwendung kann folgender Code genutzt werden diese Daten auszulesen.
Immer noch bis zu einem gewissen Grad unsicher.
string m_ClientID = System.Configuration.ConfigurationManager.AppSettings["CP.Forge.ClientID"].ToString();
Die Zugangsdaten können ebenfalls in eine Datenbank-Tabelle gespeichert werden. Wenn in dieser Tabelle der Applikationsame als Spalte hinzugefügt wird, kann in der Web-Anwendung danach gefiltert werden und unterschiedliche Zugangsdaten für mehrere Anwendungen genutzt werden.
Da die Zugangsdaten zur Datenbank ebenfalls in der web.config Datei gespeichert werden, ist es möglich diese auszulesen, um somit Zugang zur Datenbank zu erhalten.
Die Zugangsdaten können mit einem im .Net zur Verfügung gestellten Verfahren verschlüsselt werden. Der dafür notwendige Schlüssel, wird dem Webservice vom Client genannt. Er wird auf der Clientseite gespeichert.
Wird der Web-Server gehackt, wird es ohne diesen Schlüssel schwer die Zugangsdaten zu knacken.
Allerdings: Plaudert jemand den Schlüssel aus, dann hilft auch der nicht.
Im nächsten Posting zum Thema Forge Platform möchte ich den Accesstoken besprechen und erläutern wie er "gespeichert" werden kann.
© Copyright 2019 by CAD-Becker.de
When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.
|
Dipl.-Ing. Jürgen A. Becker Versorgungstechnik |
![]() |
Jürgen A. Becker
CAD-Becker.de
Detmolder Str. 786
33699 Bielefeld
Germany
Telefon
+49 (5202) 9953808
Mobil
+49 170 870 8679
E-Mail
Juergen.Becker(at)CAD-Becker.de