-
TECHNISCHES GEBIET
-
Die vorliegende Erfindung bezieht sich allgemein auf ein Verfahren, ein System und ein Computerprogrammprodukt für eine zweistufige Berechtigungsprüfung. Im Besonderen bezieht sich die vorliegende Erfindung auf ein Verfahren, ein System und ein Computerprogrammprodukt für ein automatisches Aufrüsten von einer einstufigen Berechtigungsprüfung auf eine zweistufige Berechtigungsprüfung über eine Anwendungsprogra m m ierschnittstelle.
-
HINTERGRUND
-
Es besteht ein Bedarf, eine geeignete sichere Berechtigungsprüfung für Anwendungen bereitzustellen. Gegenwärtig wird die Sicherheit von Netzwerkanwendungen von der Standardprozedur, bei der ein Benutzer eine Benutzerkennung (user identifier, ID) und ein Kennwort bereitstellt, um eine Berechtigung für eine(n) Netzwerkdienst oder -anwendung zu prüfen, dahingehend erweitert, dass ein zweistufiger Berechtigungsprüfungsprozess erforderlich wird. Zusätzlich dazu, dass ein Benutzer einen ersten Berechtigungsprüfungsfaktor wie zum Beispiel eine Benutzer-ID und ein Kennwort bereitstellen muss, muss der Benutzer bei einer zweistufigen Berechtigungsprüfung einen zweiten Berechtigungsprüfungsfaktor bereitstellen, um einen Berechtigungsprüfungsprozess abzuschließen. Typischerweise handelt es sich bei dem zweiten Berechtigungsprüfungsfaktor um dem Benutzer bekannte Daten, die einem nicht berechtigten Benutzer wahrscheinlich nicht bekannt sind, wie zum Beispiel um einen dem Benutzer bekannten geheimen Schlüssel oder ein Sicherheits-Token.
-
Daher besteht nach dem Stand der Technik ein Bedarf, das oben genannte Problem zu lösen.
-
KURZDARSTELLUNG
-
Unter einem ersten Aspekt betrachtet, stellt die vorliegende Erfindung ein Verfahren für eine zweistufige Berechtigungsprüfung bereit, wobei das Verfahren aufweist:
- Übertragen einer Benutzerkennung und eines Kennworts durch einen Client über eine Anwendungsprogrammierschnittstelle (application programming interface, API) an einen Server; Aufbauen einer auf Berechtigung geprüften Sitzung mit dem Server, wobei der Client über einen ersten Satz von Berechtigungen für Vorgänge verfügt, die der API zugehörig sind;
- Empfangen einer Anmeldeantwort und eines gemeinsam genutzten geheimen Schlüssels als Reaktion auf eine Überprüfung der Benutzerkennung und des Kennworts durch den Server;
- Erzeugen eines einmaligen Kenncodes (one time passcode, OTP) durch den Client auf Grundlage des gemeinsam genutzten geheimen Schlüssels; Senden des OTP über die API an den Server; und Gewähren eines zweiten Satzes von Berechtigungen für Vorgänge, die der API zugehörig sind, als Reaktion auf eine Überprüfung des OTP anhand des gemeinsam genutzten geheimen Schlüssels durch den Server.
-
Unter einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt für eine zweistufige Berechtigungsprüfung bereit, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, das durch eine Verarbeitungsschaltung lesbar ist und das Anweisungen zum Ausführen durch die Verarbeitungsschaltung zum Durchführen eines Verfahrens zum Durchführen der Schritte der Erfindung speichert.
-
Unter einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem durch einen Computer lesbaren Medium gespeichert ist und in den internen Speicher eines Digitalcomputers ladbar ist, das Abschnitte eines Software-Codes aufweist, um die Schritte der Erfindung durchzuführen, wenn das Programm auf einem Computer ausgeführt wird.
-
Unter einem weiteren Aspekt betrachtet, stellt die vorliegende Erfindung ein Computersystem bereit, das einen oder mehrere Prozessoren, einen oder mehrere durch einen Computer lesbare Speicher und eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen aufweist, die auf zumindest einer der einen oder mehreren Speichereinheiten zum Ausführen durch zumindest einen des einen oder der mehreren Prozessoren über zumindest einen des einen oder der mehreren Speicher gespeichert sind, wobei die gespeicherten Programmanweisungen aufweisen: Programmanweisungen zum Übertragen einer Benutzerkennung und eines Kennworts durch einen Client über eine Anwendungsprogrammierschnittstelle (API) an einen Server; Programmanweisungen zum Aufbauen einer auf Berechtigung geprüften Sitzung mit dem Server, wobei der Client über einen ersten Satz von Berechtigungen für Vorgänge verfügt, die der API zugehörig sind; Programmanweisungen zum Empfangen einer Anmeldeantwort und eines gemeinsam genutzten geheimen Schlüssels als Reaktion auf eine Überprüfung der Benutzerkennung und des Kennworts durch den Server; Programmanweisungen zum Erzeugen eines einmaligen Kenncodes (OTP) durch den Client auf Grundlage des gemeinsam genutzten geheimen Schlüssels; Programmanweisungen zum Senden des OTP über die API an den Server; und Programmanweisungen zum Gewähren eines zweiten Satzes von Berechtigungen für Vorgänge, die der API zugehörig sind, als Reaktion auf eine Überprüfung des OTP anhand des gemeinsam genutzten geheimen Schlüssels durch den Server.
-
Die veranschaulichenden Ausführungsformen stellen ein Verfahren, ein System und ein Computerprogrammprodukt bereit. Eine Ausführungsform eines Verfahrens enthält ein Übertragen einer Benutzerkennung und eines Kennworts durch einen Client über eine Anwendungsprogrammierschnittstelle (API) an einen Server. Die Ausführungsform enthält des Weiteren ein Aufbauen einer auf Berechtigung geprüften Sitzung mit dem Server, in der der Client über einen ersten Satz von Berechtigungen für Vorgänge verfügt, die der API zugehörig sind. Die Ausführungsform enthält des Weiteren ein Empfangen einer Anmeldeantwort und eines gemeinsam genutzten geheimen Schlüssels als Reaktion auf eine Überprüfung der Benutzerkennung und des Kennworts durch den Server. Die Ausführungsform enthält des Weiteren ein Erzeugen eines einmaligen Kenncodes (OTP) durch den Client auf Grundlage des gemeinsam genutzten geheimen Schlüssels. Die Ausführungsform enthält des Weiteren ein Senden des OTP über die API an den Server. Die Ausführungsform enthält noch weiter ein Gewähren eines zweiten Satzes von Berechtigungen für Vorgänge, die der API zugehörig sind, als Reaktion auf eine Überprüfung des OTP durch den Server anhand des gemeinsam genutzten geheimen Schlüssels.
-
Eine Ausführungsform enthält des Weiteren ein Empfangen der Benutzerkennung und des Kennworts durch die Client-Einheit von einem Benutzer. Bei einer Ausführungsform erfolgt das Empfangen der Anmeldeantwort und des gemeinsam genutzten geheimen Schlüssels als Reaktion auf ein Feststellen, dass ein Benutzer, dem die Benutzerkennung zugehörig ist, für ein Aufrüsten von einer Ein-Faktor-Berechtigungsprüfung auf eine Zwei-Faktor-Berechtigungsprüfung bestimmt ist.
-
Eine Ausführungsform enthält des Weiteren ein Speichern des gemeinsam genutzten geheimen Schlüssels durch den Client in Client-Vorgaben, die einem Benutzer zugehörig sind. Bei einer Ausführungsform ist der Server dazu konfiguriert, den gemeinsam genutzten geheimen Schlüssel in einem Benutzerprofil zu speichern, das einem Benutzer zugehörig ist. Bei einer Ausführungsform enthält die API eine Representational-State-Transfer(REST)-API. Bei einer Ausführungsform ist der zweite Satz von Berechtigungen größer als der erste Satz von Berechtigungen.
-
Eine Ausführungsform enthält des Weiteren ein Übertragen der Benutzer-ID, des Kennworts und eines aktuellen OTP, der auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugt worden ist, in einem nachfolgenden Anmeldevorgang an den Server.
-
Eine Ausführungsform enthält ein von einem Computer verwendbares Programmprodukt. Das von einem Computer verwendbare Programmprodukt enthält eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen, die auf zumindest einer der einen oder mehreren Speichereinheiten gespeichert sind. Eine Ausführungsform enthält ein Computersystem. Das Computersystem enthält einen oder mehrere Prozessoren, einen oder mehrere durch einen Computer lesbare Speicher und eine oder mehrere durch einen Computer lesbare Speichereinheiten und Programmanweisungen, die auf zumindest einer der einen oder mehreren Speichereinheiten zum Ausführen durch zumindest einen des einen oder der mehreren Prozessoren über zumindest einen des einen oder der mehreren Speicher gespeichert sind.
-
Figurenliste
-
Bestimmte neuartige Merkmale, die als charakteristisch für die Erfindung erachtet werden, werden in den beigefügten Ansprüchen erläutert. Die Erfindung selbst wie auch eine bevorzugte Verwendungsweise, weitere Ziele und Vorteile davon sind jedoch durch Bezugnahme auf die folgende ausführliche Beschreibung der veranschaulichenden Ausführungsformen am besten zu verstehen, wenn sie zusammen mit den beigefügten Zeichnungen gelesen werden, in denen:
- 1 ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen darstellt, in dem veranschaulichende Ausführungsformen implementiert werden können;
- 2 ein Blockschaubild eines Datenverarbeitungssystems darstellt, in dem veranschaulichende Ausführungsformen implementiert werden können;
- 3 ein Blockschaubild einer beispielhaften Konfiguration für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform darstellt;
- 4 einen Nachrichtenfluss eines beispielhaften Prozesses für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform darstellt;
- 5 einen Ablaufplan eines beispielhaften Client-seitigen Prozesses für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform darstellt; und
- 6 einen Ablaufplan eines beispielhaften Server-seitigen Prozesses für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform darstellt.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Verschiedene veranschaulichende Ausführungsformen stellen ein automatisches Aufrüsten von einer einstufigen auf eine zweistufige Berechtigungsprüfung für Server-Anwendungen oder -Dienste bereit, die eine Anwendungsprogrammierschnittstelle (API) für zustandslose Protokolle einsetzen. Bei einem zustandslosen Protokoll müssen weder der Absender noch der Empfänger Sitzungsdaten während der Dauer einer Datenübertragungssitzung beibehalten. Eine oder mehrere Ausführungsformen stellen ein automatisches Aufrüsten von einer einstufigen auf eine zweistufige Berechtigungsprüfung für Server-Anwendungen oder -Dienste bereit, die eine vollständig interne Representational-State-Transfer(REST)-API einsetzen, ohne dass zusätzliche Schritte außerhalb des Arbeitsbereichs der REST-API erforderlich sind. Eine zweistufige Berechtigungsprüfung wird bisweilen als Zwei-Faktor-Berechtigungsprüfung bezeichnet. Bei bestimmten Ausführungsformen wird eine einstufige Berechtigungsprüfung, die nur eine Benutzer-ID und ein Kennwort zur Berechtigungsprüfung einsetzt, für einen bestimmten Benutzer automatisch auf eine zweistufige Berechtigungsprüfung unter Verwendung einer Benutzer-ID/eines Kennworts sowie eines einmaligen Kenncodes zur Berechtigungsprüfung aufgerüstet.
-
In einem herkömmlichen Anwendungsfall für eine Zwei-Faktor-Berechtigungsprüfung meldet sich ein Benutzer über einen Browser bei einer Web-Anwendung an, gibt eine Benutzer-ID und ein Kennwort ein und aktiviert die Zwei-Faktor-Berechtigungsprüfung in einem Benutzerprofil, das dem Benutzer zugehörig ist. Anschließend erfasst der Benutzer einen gemeinsam genutzten geheimen Schlüssel mit einem Smartphone oder einer sonstigen Einheit, üblicherweise durch Scannen eines QR-Codes. Der Benutzer erzeugt einen Kenncode auf Grundlage des gemeinsam genutzten geheimen Schlüssels und sendet den Kenncode zur Berechtigungsprüfung an einen die Berechtigung prüfenden Server. Bei vorhandenen Implementierungen muss ein Benutzer den zweiten Faktor auf herkömmliche Weise einrichten, indem er sich über einen Web-Browser anmeldet, und im Vergleich zu einem API-Zugriff wird für einen Web-Zugriff ein separates Berechtigungsprüfungs-Token, nicht derselbe gemeinsam genutzte geheime Schlüssel und Algorithmus, verwendet.
-
Eine oder mehrere bestimmte, hierin beschriebene Ausführungsformen ermöglichen Benutzern, die mit einer Web-Anwendung über REST-APIs interagieren, denselben Satz von Merkmalen, die für einen herkömmlichen Web-Browser verfügbar sind, der eine zweistufige Berechtigungsprüfung für ihre Benutzerkonten ermöglicht, als Berechtigungsprüfung über einen REST-API-Client zu nutzen.
-
Bei einer Ausführungsform wird ein bestimmter Benutzer dazu bestimmt, ein Aufrüsten von einer Ein-Faktor-Berechtigungsprüfung auf eine Zwei-Faktor-Berechtigungsprüfung zu benötigen, um bei einem nächsten Anmeldeversuch Zugriff auf eine oder mehrere Anwendungen oder Dienste zu gewähren. Bei einer bestimmten Ausführungsform wird der Benutzer durch einen Administrator einer Anwendung oder eines Dienstes dazu bestimmt, eine Zwei-Faktor-Berechtigungsprüfung zu benötigen. Bei der Ausführungsform meldet sich ein Benutzer bei einem Server wie zum Beispiel einem Berechtigungsprüfungs-Server an, indem er eine Benutzer-ID und ein Kennwort mithilfe einer Web-Dienste-(REST-API)-Client-Anwendung bereitstellt. Bei der Ausführungsform versucht der Server, den Benutzer mithilfe der Benutzer-ID und des Kennworts zu überprüfen.
-
Bei einer erfolgreichen Berechtigungsprüfung wird eine Sitzung wie zum Beispiel eine Web-Dienstesitzung zwischen dem Server und dem Client aufgebaut, bei der sich der Benutzer in einem Zustand eingeschränkter Anmeldung befindet. In dem Zustand eingeschränkter Anmeldung ist die Berechtigung des Benutzers geprüft, er verfügt jedoch nur über eine Berechtigung zum Zugreifen auf einen eingeschränkten Satz von API-Vorgängen. Bei der Ausführungsform erzeugt der Server einen gemeinsam genutzten geheimen Schlüssel und speichert den gemeinsam genutzten geheimen Schlüssel innerhalb der Sitzung. Bei einer oder mehreren Ausführungsformen handelt es sich bei dem gemeinsam genutzten geheimen Schlüssel um Daten, die nur dem Client und dem Server bekannt sind, die mithilfe eines Schlüsselaustauschprotokolls wie zum Beispiel einer Verschlüsselung mit öffentlichem Schlüssel erzeugt werden. Bei bestimmten Ausführungsformen handelt es sich bei dem gemeinsam genutzten geheimen Schlüssel um ein Kennwort, eine Kennphrase oder eine pseudo-zufällig erzeugte Zahl oder Zeichenfolge. Bei der Ausführungsform sendet der Server eine Anmeldeantwort an den Client zurück, die sitzungsspezifische Daten und den gemeinsam genutzten geheimen Schlüssel enthält.
-
Bei der Ausführungsform erzeugt die Client-Anwendung einen einmaligen Kenncode (OTP) auf Grundlage des gemeinsam genutzten geheimen Schlüssels. Bei einer bestimmten Ausführungsform wird der OTP aus dem gemeinsam genutzten geheimen Schlüssel mithilfe eines Algorithmus für einen einmaligen Kenncode auf Grundlage der Zeit (time-based one time passcode, TOTP) erzeugt, wie zum Beispiel in M'Raihi, D., Machani, S., Pei, M., Rydell, J., „TOTP: Time-Based One-Time Password Algorithm“, Request for Comments (RFC) 6238, Internet Engineering Task Force (IETF), Mai 2011, beschrieben. Bei einer oder mehreren Ausführungsformen kombiniert der Server den gemeinsam genutzten geheimen Schlüssel mit einer aktuellen Zeitmarke mithilfe einer kryptographischen Hash-Funktion, um den einmaligen Kenncode zu erzeugen. Bei der Ausführungsform sendet der Client eine API-Anforderung an den Server, die den OTP enthält, die ein Einrichten des gemeinsam genutzten geheimen Schlüssels in einem Benutzerprofil anfordert, das dem Benutzer zugehörig ist.
-
Als Reaktion auf das Empfangen des OTP überprüft der Server diesen OTP anhand des gemeinsam genutzten geheimen Schlüssels. Wenn die Überprüfung erfolgreich ist, speichert der Server den gemeinsam genutzten geheimen Schlüssel in dem Benutzerprofil und sendet eine Erfolgsantwort an den Client zurück. Bei der Ausführungsform speichert die Client-Anwendung den gemeinsam genutzten geheimen Schlüssel in den REST-API-Client-Vorgaben oder in einer weiteren Datenbank. Bei der Ausführungsform erfordern nachfolgende Anmeldungen von dem Benutzer, dass der Benutzer die Benutzer-ID, das Kennwort und einen aktuellen OTP auf Grundlage des gemeinsam genutzten geheimen Schlüssels sendet, um für den Server auf Berechtigung geprüft zu werden, um Zugriff auf Anwendungen und Dienste zu erlangen, die durch den Server bereitgestellt werden.
-
Die veranschaulichenden Ausführungsformen werden im Hinblick auf bestimmte Typen von Diensten, Übertragungen, Datenverarbeitungssystemen, Umgebungen, Komponenten und Anwendungen lediglich als Beispiele beschrieben. Jegliche spezifischen Ausprägungen dieser und sonstiger ähnlicher Artefakte sollen die Erfindung nicht beschränken. Jegliche geeignete Ausprägung dieser und sonstiger ähnlicher Artefakte kann innerhalb des Umfangs der veranschaulichenden Ausführungsformen gewählt werden.
-
Des Weiteren können die veranschaulichenden Ausführungsformen im Hinblick auf einen beliebigen Typ von Daten, Datenquellen oder Zugriff auf eine Datenquelle über ein Datennetzwerk implementiert werden. Jeglicher Typ von Datenspeichereinheit kann die Daten innerhalb des Umfangs der Erfindung für eine Ausführungsform der Erfindung bereitstellen, entweder lokal in einem Datenverarbeitungssystem oder über ein Datennetzwerk. Wenn eine Ausführungsform mithilfe einer mobilen Einheit beschrieben wird, kann ein beliebiger Typ einer Datenspeichereinheit, der zur Verwendung mit der mobilen Einheit geeignet ist, innerhalb des Umfangs der veranschaulichenden Ausführungsformen die Daten für eine solche Ausführungsform bereitstellen, entweder lokal auf der mobilen Einheit oder über ein Datennetzwerk.
-
Die veranschaulichenden Ausführungsformen werden mithilfe von spezifischem Code, spezifischen Ausgestaltungen, Architekturen, Protokollen, Layouts, Schemata und Werkzeugen lediglich als Beispiele beschrieben und bedeuten keine Beschränkung auf die veranschaulichenden Ausführungsformen. Des Weiteren werden die veranschaulichenden Ausführungsformen in einigen Fällen mithilfe bestimmter Software, Werkzeuge und Datenverarbeitungsumgebungen lediglich als Beispiel zur deutlichen Beschreibung beschrieben. Die veranschaulichenden Ausführungsformen können zusammen mit sonstigen vergleichbaren oder für ähnliche Zwecke bestimmten Strukturen, Systemen, Anwendungen oder Architekturen verwendet werden. Beispielsweise können sonstige vergleichbare mobile Einheiten, Strukturen, Systeme, Anwendungen oder Architekturen dafür innerhalb des Umfangs der Erfindung zusammen mit einer solchen Ausführungsform der Erfindung verwendet werden. Eine veranschaulichende Ausführungsform kann in Hardware, Software oder einer Kombination von diesen implementiert werden.
-
Die Beispiele in dieser Offenbarung werden lediglich der Deutlichkeit der Beschreibung halber verwendet und bedeuten keine Beschränkung auf die veranschaulichenden Ausführungsformen. Zusätzliche Daten, Vorgänge, Maßnahmen, Aufgaben, Aktivitäten und Manipulationen werden aus dieser Offenbarung ersichtlich, und dieselben werden innerhalb des Umfangs der veranschaulichenden Ausführungsformen in Betracht gezogen.
-
Jegliche Vorteile, die hierin aufgeführt werden, dienen lediglich als Beispiele und sollen keine Beschränkung auf die veranschaulichenden Ausführungsformen bedeuten. Zusätzliche oder unterschiedliche Vorteile können durch spezifische veranschaulichende Ausführungsformen umgesetzt werden. Des Weiteren kann eine bestimmte veranschaulichende Ausführungsform einige, alle oder keine der oben aufgeführten Vorteile aufweisen.
-
Unter Bezugnahme auf die Figuren und insbesondere unter Bezugnahme auf die 1 und 2 sind diese Figuren beispielhafte Schaubilder von Datenverarbeitungsumgebungen, in denen veranschaulichende Ausführungsformen implementiert werden können. Die 1 und 2 dienen lediglich als Beispiele und sind nicht dazu bestimmt, eine Einschränkung in Bezug auf die Umgebungen, in denen verschiedene Ausführungsformen implementiert werden können, geltend zu machen oder zu implizieren. Eine bestimmte Implementierung kann auf Grundlage der folgenden Beschreibung zahlreiche Modifizierungen an den dargestellten Umgebungen vornehmen.
-
1 stellt ein Blockschaubild eines Netzwerks von Datenverarbeitungssystemen dar, in dem veranschaulichende Ausführungsformen implementiert werden können. Bei einer Datenverarbeitungsumgebung 100 handelt es sich um ein Netzwerk von Computern, in dem die veranschaulichenden Ausführungsformen implementiert werden können. Die Datenverarbeitungsumgebung 100 enthält ein Netzwerk 102. Bei dem Netzwerk 102 handelt es sich um das Medium, das zum Bereitstellen von Datenübertragungsverbindungen zwischen verschiedenen Einheiten und Computern verwendet wird, die innerhalb der Datenverarbeitungsumgebung 100 miteinander verbunden sind. Das Netzwerk 102 kann Verbindungen wie zum Beispiel drahtgebundene und drahtlose Datenaustauschverbindungen oder Lichtwellenleiterkabel enthalten.
-
Bei Clients oder Servern handelt es sich lediglich um beispielhafte Rollen bestimmter Datenverarbeitungssysteme, die mit dem Netzwerk 102 verbunden sind, und sie sollen sonstige Konfigurationen oder Rollen für diese Datenverarbeitungssysteme nicht ausschließen. Ein Server 104 und ein Server 106 sind zusammen mit einer Speichereinheit 108 mit dem Netzwerk 102 verbunden. Software-Anwendungen können auf einem beliebigen Computer in der Datenverarbeitungsumgebung 100 ausgeführt werden. Darüber hinaus sind Clients 110, 112 und 114 mit dem Netzwerk 102 verbunden. Ein Datenverarbeitungssystem wie zum Beispiel der Server 104 oder 106 oder der Client 110, 112 oder 114 kann Daten enthalten, und es können Software-Anwendungen und Software-Werkzeuge darauf ausgeführt werden.
-
Lediglich als Beispiel und ohne jegliche Beschränkung auf eine solche Architektur zu implizieren, stellt 1 bestimmte Komponenten dar, die in einer beispielhaften Implementierung einer Ausführungsform verwendbar sind. Beispielsweise werden die Server 104 und 106 und die Clients 110, 112, 114 nur beispielhaft als Server und Clients dargestellt und nicht, um eine Beschränkung einer Client-/Server-Architektur zu implizieren. Als weiteres Beispiel kann eine Ausführungsform innerhalb des Umfangs der veranschaulichenden Ausführungsformen über mehrere Datenverarbeitungssysteme und ein Datennetzwerk hinweg verteilt sein, wie dargestellt, wohingegen eine weitere Ausführungsform in einem einzigen Datenverarbeitungssystem implementiert sein kann. Die Datenverarbeitungssysteme 104, 106, 110, 112 und 114 stellen darüber hinaus beispielhafte Knoten in einem Verbund, Partitionen und sonstige Konfigurationen dar, die zum Implementieren einer Ausführungsform geeignet sind.
-
Bei einer Einheit 132 handelt es sich um ein Beispiel für eine hierin beschriebene Einheit. Beispielsweise kann die Einheit 132 die Form eines Smartphones, eines Tablet-Computers, eines Laptop-Computers, eines Clients 110 in einer ortsgebundenen oder einer mobilen Form, einer tragbaren Datenverarbeitungseinheit oder einer beliebigen sonstigen geeigneten Einheit annehmen. Jegliche Software-Anwendung, die in 1 so beschrieben wird, dass sie in einem weiteren Datenverarbeitungssystem ausgeführt wird, kann so konfiguriert werden, dass sie in ähnlicher Weise in der Einheit 132 ausgeführt wird. Jegliche Daten oder Informationen, die in 1 in einem weiteren Datenverarbeitungssystem gespeichert oder erzeugt werden, können so konfiguriert werden, dass sie in ähnlicher Weise in der Einheit 132 gespeichert oder erzeugt werden.
-
Eine Server-Anwendung 105 des Servers 104 implementiert eine Ausführungsform von Server-seitigen Vorgängen zur Berechtigungsprüfung, die hierin beschrieben werden. Eine Datenbank 109 kann in dem Speicher 108 gespeichert sein, wie dargestellt, oder durch eine (nicht dargestellte) weitere Quelle bereitgestellt werden. Bei bestimmten Ausführungsformen kann die Datenbank 109 Benutzerprofildaten speichern, die einem oder mehreren Benutzern zugehörig sind. Eine Client-Anwendung 111 implementiert eine Ausführungsform von Client-seitigen Vorgängen zur Berechtigungsprüfung, die hierin beschrieben werden.
-
Die Server 104 und 106, die Speichereinheit 108 und die Clients 110, 112 und 114 und die Einheit 132 können mithilfe von drahtgebundenen Verbindungen, drahtlosen Datenübertragungsprotokollen oder einer sonstigen geeigneten Datenkonnektivität eine Verbindung mit dem Netzwerk 102 herstellen. Bei den Clients 110, 112 und 114 kann es sich zum Beispiel um Personal-Computer oder Netzwerkcomputer handeln.
-
In dem dargestellten Beispiel kann der Server 104 den Clients 110, 112 und 114 Daten wie zum Beispiel Boot-Dateien, Betriebssystemabbilder und Anwendungen bereitstellen. In diesem Beispiel kann es sich bei den Clients 110, 112 und 114 um Clients des Servers 104 handeln. Die Clients 110, 112, 114 oder eine Kombination von diesen können ihre eigenen Daten, Boot-Dateien, Betriebssystemabbilder und Anwendungen enthalten. Die Datenverarbeitungsumgebung 100 kann zusätzliche Server, Clients und sonstige Einheiten enthalten, die nicht dargestellt sind.
-
In dem dargestellten Beispiel kann es sich bei der Datenverarbeitungsumgebung 100 um das Internet handeln. Das Netzwerk 102 kann einen Bestand von Netzwerken und Gateways darstellen, die das Transmission-Control-Protocol/Internet-Protocol (TCP/IP) und sonstige Protokolle dazu verwenden, Daten miteinander auszutauschen. Im Kern des Internet befindet sich eine Zentralverbindung aus Datenübertragungsverbindungen zwischen Hauptknoten oder Host-Computern, die Tausende von kommerziellen, behördlichen, Bildungs- und sonstigen Computersystemen enthalten, die Daten und Nachrichten weiterleiten. Selbstverständlich kann die Datenverarbeitungsumgebung 100 auch als eine Reihe verschiedener Netzwerktypen wie zum Beispiel ein Intranet, ein lokales Netzwerk (local area network, LAN) oder ein Weitverkehrs-Netzwerk (wide area network, WAN) implementiert werden. 1 ist als Beispiel gemeint und nicht als architektonische Einschränkung der verschiedenen veranschaulichenden Ausführungsformen.
-
Neben sonstigen Verwendungen kann die Datenverarbeitungsumgebung 100 zum Implementieren einer Client-/Server-Umgebung verwendet werden, in der die veranschaulichenden Ausführungsformen implementiert werden können. Eine Client-/Server-Umgebung ermöglicht, dass Software-Anwendungen und Daten so über ein Netzwerk hinweg verteilt werden, dass eine Anwendung mithilfe der Interaktivität zwischen einem Client-Datenverarbeitungssystem und einem Server-Datenverarbeitungssystem funktioniert. Die Datenverarbeitungsumgebung 100 kann auch eine Service-orientierte Architektur einsetzen, in der funktionell aufeinander abgestimmte Software-Komponenten, die über ein Netzwerk hinweg verteilt sind, als zusammenhängende Geschäftsanwendungen gebündelt werden können. Die Datenverarbeitungsumgebung 100 kann auch die Form einer Cloud annehmen und ein Cloud-Computing-Modell zum Erbringen von Diensten einsetzen, um einen praktischen, bedarfsgesteuerten Netzwerkzugriff auf einen gemeinsam genutzten Pool von konfigurierbaren Datenverarbeitungs-Ressourcen (z.B. Netzwerken, Netzwerkbandbreite, Servern, Verarbeitung, Arbeitsspeicher, Speicher, Anwendungen, virtuellen Maschinen und Diensten) zu ermöglichen, die schnell mit möglichst geringem Verwaltungsaufwand oder Zusammenwirken mit einem Anbieter des Dienstes bereitgestellt und freigegeben werden können.
-
Unter Bezugnahme auf 2 stellt diese Figur ein Blockschaubild eines Datenverarbeitungssystems dar, in dem veranschaulichende Ausführungsformen implementiert werden können. Bei einem Datenverarbeitungssystem 200 handelt es sich um ein Beispiel für einen Computer wie etwa die Server 104 und 106 oder die Clients 110, 112 und 114 in 1 oder um einen weiteren Typ von Einheit, in dem sich von einem Computer verwendbarer Programmcode oder Anweisungen, die die Prozesse implementieren, für die veranschaulichenden Ausführungsformen befinden können.
-
Das Datenverarbeitungssystem 200 ist darüber hinaus repräsentativ für ein Datenverarbeitungssystem oder eine Konfiguration darin wie zum Beispiel die Einheit 132 in 1, in der sich von einem Computer verwendbarer Programmcode oder Anweisungen befinden können, die die Prozesse der veranschaulichenden Ausführungsformen implementieren. Das Datenverarbeitungssystem 200 wird lediglich als Beispiel als Computer beschrieben, ohne darauf beschränkt zu sein. Implementierungen in Form sonstiger Einheiten wie zum Beispiel der Einheit 132 in 1 können das Datenverarbeitungssystem 200 modifizieren, wie etwa durch Hinzufügen einer Berührungsschnittstelle, und sogar bestimmte dargestellte Komponenten aus dem Datenverarbeitungssystem 200 entfernen, ohne von der allgemeinen Beschreibung der Vorgänge und Funktionen des hierin beschriebenen Datenverarbeitungssystems 200 abzuweichen.
-
In dem dargestellten Beispiel verwendet das Datenverarbeitungssystem 200 eine Hub-Architektur, die einen North-Bridge- und Speichersteuereinheiten-Hub (NB/MCH) 202 und einen South-Bridge- und Eingabe/Ausgabe(E/A)-Steuereinheiten-Hub (SB/ICH) 204 enthält. Eine Verarbeitungseinheit 206, ein Hauptspeicher 208 und ein Grafikprozessor 210 sind mit dem North-Bridge- und Speichersteuereinheiten-Hub (NB/MCH) 202 verbunden. Die Verarbeitungseinheit 206 kann einen oder mehrere Prozessoren enthalten und kann mithilfe eines oder mehrerer heterogener Prozessorsysteme implementiert werden. Bei der Verarbeitungseinheit 206 kann es sich um einen Mehrkernprozessor handeln. Der Grafikprozessor 210 kann bei bestimmten Implementierungen durch einen Accelerated Graphics Port (AGP) mit dem NB/MCH 202 verbunden sein.
-
In dem dargestellten Beispiel ist ein Adapter 212 für ein lokales Netzwerk (LAN) mit dem South-Bridge- und E/A-Steuereinheiten-Hub (SB/ICH) 204 verbunden. Ein Audioadapter 216, ein Tastatur- und Mausadapter 220, ein Modem 222, ein Festwertspeicher (read only memory, ROM) 224, Anschlüsse für universelle serielle Busse (USB) und sonstige Anschlüsse 232 und PCI/PCIe-Einheiten 234 sind durch einen Bus 238 mit dem South-Bridge- und E/A-Steuereinheiten-Hub 204 verbunden. Ein Festplattenlaufwerk (hard disk drive, HDD) oder Solid-State-Laufwerk (SSD) 226 und ein CD-ROM-Laufwerk 230 sind durch einen Bus 240 mit dem South-Bridge- und E/A-Steuereinheiten-Hub 204 verbunden. Zu den PCI/PCIe-Einheiten 234 können zum Beispiel Ethernet-Adapter, Erweiterungskarten und PC-Karten für Notebook-Computer gehören. Im Gegensatz zu PCle verwendet PCI eine Kartenbus-Steuereinheit. Bei dem ROM 224 kann es sich zum Beispiel um ein binäres Eingabe/Ausgabe-Flash-System (binary input/output system, BIOS) handeln. Das Festplattenlaufwerk 226 und das CD-ROM-Laufwerk 230 können zum Beispiel eine Integrated-Drive-Electronics(IDE)- oder eine Serial-Advanced-Technology-Attachment(SATA)-Schnittstelle oder Varianten wie zum Beispiel external-SATA (eSATA) und micro-SATA (mSATA) verwenden. Eine Super-E/A- (super I/O, SIO-) Einheit 236 kann durch den Bus 238 mit dem South-Bridge- und E/A-Steuereinheiten-Hub (SB/ICH) 204 verbunden sein.
-
Speicher wie etwa der Hauptspeicher 208, der ROM 224 oder ein (nicht dargestellter) Flash-Speicher sind einige Beispiele für von einem Computer verwendbare Speichereinheiten. Das Festplattenlaufwerk oder das Solid-State-Laufwerk 226, das CD-ROM-Laufwerk 230 und sonstige in ähnlicher Weise verwendbare Einheiten sind einige Beispiele für von einem Computer verwendbare Speichereinheiten, die ein von einem Computer verwendbares Speichermedium enthalten.
-
Ein Betriebssystem wird auf der Verarbeitungseinheit 206 ausgeführt. Das Betriebssystem koordiniert eine Steuerung verschiedener Komponenten innerhalb des Datenverarbeitungssystems 200 in 2 und stellt sie bereit. Bei dem Betriebssystem kann es sich um ein handelsübliches Betriebssystem für einen beliebigen Typ einer Datenverarbeitungsplattform handeln, darunter um Server-Systeme, Personal-Computer und mobile Einheiten, ohne darauf beschränkt zu sein. Ein objektorientiertes oder ein andersartiges Programmiersystem kann zusammen mit dem Betriebssystem arbeiten und Aufrufe an das Betriebssystem von Programmen oder Anwendungen bereitstellen, die in dem Datenverarbeitungssystem 200 ausgeführt werden.
-
Anweisungen für das Betriebssystem, das objektorientierte Programmiersystem und Anwendungen oder Programme wie zum Beispiel die Server-Anwendung 105 oder die Client-Anwendung 111 in 1 befinden sich auf Speichereinheiten wie zum Beispiel in Form eines Codes 226A auf dem Festplattenlaufwerk 226 und können zur Ausführung durch die Verarbeitungseinheit 206 in zumindest einen von einem oder mehreren Speichern wie zum Beispiel den Hauptspeicher 208 geladen werden. Die Prozesse für veranschaulichende Ausführungsformen können durch die Verarbeitungseinheit 206 mithilfe von auf einem Computer implementierten Anweisungen durchgeführt werden, die sich in einem Speicher wie beispielsweise dem Hauptspeicher 208, dem Festwertspeicher 224 oder in einer oder mehreren Peripherieeinheiten befinden können.
-
Darüber hinaus kann in einem Fall der Code 226A über ein Netzwerk 201A von einem entfernt angeordneten System 201B heruntergeladen werden, wobei ein ähnlicher Code 201C auf einer Speichereinheit 201D gespeichert wird. In einem weiteren Fall kann der Code 226A über das Netzwerk 201A auf ein entfernt angeordnetes System 201B heruntergeladen werden, wobei der heruntergeladene Code 201C auf einer Speichereinheit 201D gespeichert wird.
-
Die Hardware in den 1 bis 2 kann abhängig von der Implementierung variieren. Sonstige interne Hardware oder Peripherieeinheiten wie zum Beispiel ein Flash-Speicher, ein gleichwertiger nichtflüchtiger Speicher oder optische Plattenlaufwerke und dergleichen können zusätzlich oder anstelle der in 1 bis 2 dargestellten Hardware verwendet werden. Darüber hinaus können die Prozesse der veranschaulichenden Ausführungsformen auf ein Mehrprozessor-Datenverarbeitungssystem angewendet werden.
-
Bei einigen veranschaulichenden Beispielen kann es sich bei dem Datenverarbeitungssystem 200 um einen persönlichen digitalen Assistenten (PDA) handeln, der im Allgemeinen mit einem Flash-Speicher so konfiguriert ist, dass er einen nichtflüchtigen Speicher zum Speichern von Betriebssystemdateien und/oder vom Benutzer erzeugten Daten bereitstellt. Ein Bussystem kann einen oder mehrere Busse wie zum Beispiel einen Systembus, einen E/A-Bus und einen PCI-Bus aufweisen. Das Bussystem kann selbstverständlich mithilfe eines beliebigen Typs einer Datenübertragungsstruktur oder Architektur implementiert werden, der eine Übertragung von Daten zwischen verschiedenen, mit der Struktur oder Architektur verbundenen Komponenten oder Einheiten bereitstellt.
-
Eine Datenübertragungseinheit kann eine oder mehrere Einheiten enthalten, die zum Übertragen und Empfangen von Daten verwendet werden, wie zum Beispiel einen Modem oder einen Netzwerkadapter. Bei einem Speicher kann es sich zum Beispiel um den Hauptspeicher 208 oder um einen Cache wie etwa den Cache handeln, der in dem North-Bridge- und Speichersteuereinheiten-Hub 202 zu finden ist. Eine Verarbeitungseinheit kann eine(n) oder mehrere Prozessoren oder CPUs enthalten.
-
Die in den 1 bis 2 dargestellten Beispiele und die oben beschriebenen Beispiele sind nicht dazu bestimmt, der Architektur Beschränkungen aufzuerlegen. Beispielsweise kann es sich bei dem Datenverarbeitungssystem 200 zusätzlich dazu, dass es die Form einer mobilen oder tragbaren Einheit annimmt, auch um einen Tablet-Computer, einen Laptop-Computer oder um eine Telefoneinheit handeln.
-
Wo ein Computer oder ein Datenverarbeitungssystem als virtuelle Maschine, virtuelle Einheit oder virtuelle Komponente beschrieben wird, arbeitet die virtuelle Maschine, die virtuelle Einheit oder die virtuelle Komponente in der Weise des Datenverarbeitungssystems 200 mithilfe einer virtualisierten Ausprägung einiger oder sämtlicher Komponenten, die in dem Datenverarbeitungssystem 200 dargestellt sind. In einer virtuellen Maschine, einer virtuellen Einheit oder einer virtuellen Komponente ist die Verarbeitungseinheit 206 zum Beispiel als virtualisierte Instanz sämtlicher oder eines Teils von Hardware-Verarbeitungseinheiten 206 ausgeprägt, die in einem Host-Datenverarbeitungssystem verfügbar sind, der Hauptspeicher 208 ist als virtualisierte Instanz des gesamten oder eines Teils des Hauptspeichers 208 ausgeprägt, der in dem Host-Datenverarbeitungssystem verfügbar sein kann, und die Platte 226 ist als virtualisierte Instanz des gesamten oder eines Teils der Platte 226 ausgeprägt, die in dem Host-Datenverarbeitungssystem verfügbar sein kann. In solchen Fällen wird das Host-Datenverarbeitungssystem durch das Datenverarbeitungssystem 200 dargestellt.
-
Unter Bezugnahme auf 3 stellt diese Figur ein Blockschaubild einer beispielhaften Konfiguration für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform dar. Ein Client 302 ist ein Beispiel für den Client 110 in 1, und eine Client-Anwendung 306 ist ein Beispiel für die Client-Anwendung 111 in 1. Ein Server 304 ist ein Beispiel für den Server 104 in 1, und eine Server-Anwendung 314 ist ein Beispiel für die Server-Anwendung 105 in 1. Ein Netzwerk 300 ist ein Beispiel für das Netzwerk 102 in 1.
-
Die Client-Anwendung 306 enthält eine Berechtigungsprüfungskomponente 308, eine REST-API-Komponente 310 und eine Client-Vorgabenkomponente 312. Die Berechtigungsprüfungskomponente 308 ist dazu konfiguriert, Client-seitige Vorgänge zur Berechtigungsprüfung wie zum Beispiel ein Erzeugen eines OTP aus einem gemeinsam genutzten geheimen Schlüssel durchzuführen, wie hierin beschrieben. Die REST-API-Komponente 310 ist dazu konfiguriert, Nachrichtenvorgänge auf Grundlage von REST durchzuführen, zum Beispiel zwischen dem Client 302 und dem Server 304, wie hierin beschrieben. Die Client-Vorgabenkomponente 312 ist dazu konfiguriert, Client-Vorgabendaten zu speichern, die einem Benutzer 322 des Clients 302 zugehörig sind, wie zum Beispiel ein von dem Server 304 empfangener, gemeinsam genutzter geheimer Schlüssel, wie hierin beschrieben.
-
Die Server-Anwendung 314 enthält eine Berechtigungsprüfungskomponente 316, eine REST-API-Komponente 318 und eine Benutzerprofilkomponente 320. Die Berechtigungsprüfungskomponente 316 ist dazu konfiguriert, Server-seitige Vorgänge zur Berechtigungsprüfung wie zum Beispiel ein Erzeugen eines gemeinsam genutzten geheimen Schlüssels, ein Überprüfen einer Kombination aus Benutzer-ID/Kennwort und ein Überprüfen eines bestimmten OTP anhand eines gemeinsam genutzten geheimen Schlüssels durchzuführen, wie hierin beschrieben. Die REST-API-Komponente 318 ist dazu konfiguriert, Nachrichtenvorgänge auf Grundlage von REST durchzuführen, zum Beispiel zwischen dem Server 304 und dem Client 302, wie hierin beschrieben. Die Benutzerprofilkomponente 320 ist dazu konfiguriert, Benutzerprofildaten zu speichern, die dem Benutzer 322 des Clients 302 zugehörig sind, wie zum Beispiel den durch die Berechtigungsprüfungskomponente 316 erzeugten, gemeinsam genutzten geheimen Schlüssel, wie hierin beschrieben.
-
Bei einer Ausführungsform wird ein Prozess für eine zweistufige Berechtigungsprüfung für Anwendungen und Dienste bereitgestellt, die eine REST-API einsetzen, in dem der Benutzer 322 der Client-Anwendung 306 des Clients 302 eine Benutzer-ID und ein Kennwort bereitstellt und die Client-Anwendung 306 die Benutzer-ID und das Kennwort an die Server-Anwendung 314 des Servers 304 überträgt. Als Reaktion auf das Empfangen der Benutzer-ID und des Kennworts überprüft die Server-Anwendung 314 die Benutzer-ID und das Kennwort. Bei einem erfolgreichen Überprüfen der Benutzer-ID und des Kennworts ermittelt die Server-Anwendung 314, ob der Benutzer 322 von einer einstufigen Berechtigungsprüfung auf eine zweistufige Berechtigungsprüfung aufgerüstet werden soll. Wenn der Benutzer 322 nicht von einer einstufigen Berechtigungsprüfung auf eine zweistufige Berechtigungsprüfung aufgerüstet werden soll, baut der Server 304 eine auf Berechtigung geprüfte Sitzung zwischen dem Client 302 und dem Server 304 mit vollständigen Berechtigungen/vollständigem Zugriff für/auf API-Vorgänge für den Client 302 auf. Wenn der Benutzer 322 von einer einstufigen Berechtigungsprüfung auf eine zweistufige Berechtigungsprüfung aufgerüstet werden soll, baut der Server 304 eine auf Berechtigung geprüfte Sitzung zwischen dem Client 302 und dem Server 304 mit eingeschränkter Berechtigung im Hinblick auf zulässige API-Vorgänge für den Client 302 auf. Der Server 304 sendet eine Anmeldeantwort, die den durch die Berechtigungsprüfungskomponente 316 erzeugten, gemeinsam genutzten geheimen Schlüssel enthält, an den Client 302. Client 302 empfängt die Anmeldeantwort, die den gemeinsam genutzten geheimen Schlüssel enthält, und erzeugt einen einmaligen Kenncode (OTP) auf Grundlage des gemeinsam genutzten geheimen Schlüssels. Der Client 302 sendet eine API-Anforderung, die den OTP enthält, an den Server 304, die angibt, dass der gemeinsam genutzte geheime Schlüssel in einem Benutzerprofil eingerichtet werden soll, das dem Benutzer 322 zugehörig ist. Der Server 304 empfängt die Anforderung, die den OTP enthält, und überprüft den OTP anhand des gemeinsam genutzten geheimen Schlüssels. Wenn der Server 304 den OTP anhand des gemeinsam genutzten geheimen Schlüssels erfolgreich überprüft, setzt der Server 304 die auf Berechtigung geprüfte Sitzung zwischen dem Server 304 und dem Client 302 fort, in der dem Client 302 vollständige Berechtigungen/vollständiger Zugriff für/auf API-Vorgänge gewährt wird. Der Server 304 speichert den gemeinsam genutzten geheimen Schlüssel in dem Benutzerprofil, so dass nachfolgende Anmeldungen durch die Client-Anwendung 306 die Benutzer-ID, das Kennwort und einen aktuellen OTP erfordern, der auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugt wird.
-
Unter Bezugnahme auf 4 stellt diese Figur einen Nachrichtenfluss eines beispielhaften Prozesses für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform dar. Bei einer oder mehreren Ausführungsformen kann ein Nachrichtenfluss 400 in der Client-Anwendung 306 und der Server-Anwendung 314 von 3 implementiert werden.
-
In 402 empfängt der Client 302 eine Benutzer-ID und ein Kennwort von dem Benutzer 322. In 404 sendet der Client 302 die Benutzer-ID und das Kennwort an den Server 304. In 406 überprüft der Server 304 die Berechtigung des Benutzers 322 mithilfe eines ersten Berechtigungsprüfungsfaktors durch Überprüfen der Benutzer-ID und des Kennworts. Wenn bestimmt wird, dass der Benutzer 322 ein Aufrüsten von einer einstufigen Berechtigungsprüfung auf eine zweistufige Berechtigungsprüfung benötigt, erzeugt der Server 304 in 408 einen gemeinsam genutzten geheimen Schlüssel und baut eine auf Berechtigung geprüfte Sitzung mit dem Client 302 auf. Bei einer bestimmten Ausführungsform weist die auf Berechtigung geprüfte Sitzung eingeschränkte(n) Berechtigungen/Zugriff von API-Vorgängen für den Client 302 auf. In 410 sendet der Server 304 sitzungsspezifische Daten und den gemeinsam genutzten geheimen Schlüssel mithilfe der auf Berechtigung geprüften Sitzung an den Client 302. In 412 erzeugt der Client 302 einen einmaligen Kenncode (OTP) auf Grundlage des gemeinsam genutzten geheimen Schlüssels. In 414 sendet der Client 302 den auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugten OTP an den Server 304.
-
In 416 überprüft der Server 304 den OTP anhand des gemeinsam genutzten geheimen Schlüssels. Wenn der OTP überprüft ist, speichert der Server 304 in 418 den gemeinsam genutzten geheimen Schlüssel in einem Benutzerprofil, das dem Benutzer 322 zugehörig ist. In 420 sendet der Server 304 eine Berechtigungsprüfungsantwort an den Client 302, um die auf Berechtigung geprüfte Sitzung fortzusetzen, in der der Client 302 über vollständige(n) Berechtigungen/Zugriff für/auf API-Vorgänge verfügt, um Zugriff auf Anwendungen und/oder Dienste zu erlangen, die durch den Server 304 oder einen weiteren Server bereitgestellt werden. In 422 speichert der Client 302 den gemeinsam genutzten geheimen Schlüssel in der Client-Vorgabenkomponente 312. Danach endet der Nachrichtenfluss 400. Bei der Ausführungsform erfordern nachfolgende Anmeldungen von dem Benutzer 322, dass der Benutzer 322 die Benutzer-ID, das Kennwort und einen aktuellen OTP bereitstellt, der auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugt wird, um für den Server auf Berechtigung geprüft zu werden, um Zugriff auf Anwendungen und Dienste zu erlangen, die durch den Server bereitgestellt werden.
-
Unter Bezugnahme auf 5 stellt diese Figur einen Ablaufplan eines beispielhaften Client-seitigen Prozesses für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform dar. Bei einer oder mehreren Ausführungsformen kann ein Prozess 500 in der Client-Anwendung 306 in 3 implementiert werden. In 502 fragt die Client-Anwendung 306 eine Benutzer-ID und ein Kennwort von dem Benutzer 322 ab. In 504 empfängt die Client-Anwendung 306 die Benutzer-ID und das Kennwort von dem Benutzer 322. In 506 sendet die Client-Anwendung 306 die Benutzer-ID und das Kennwort an den Server 304.
-
Wenn bestimmt wird, dass der Benutzer 322 ein Aufrüsten von einer einstufigen Berechtigungsprüfung auf eine zweistufige Berechtigungsprüfung benötigt, erzeugt der Server 304 einen gemeinsam genutzten geheimen Schlüssel. In Block 508 baut der Client 302 eine auf Berechtigung geprüfte Sitzung mit dem Server 304 auf. Bei einer bestimmten Ausführungsform weist die erste auf Berechtigung geprüfte Sitzung eingeschränkte(n) Berechtigungen/Zugriff für/auf API-Vorgänge für den Client 302 auf. In 510 empfängt der Client 302 eine Anmeldeantwort, die den gemeinsam genutzten geheimen Schlüssel enthält, mithilfe der auf Berechtigung geprüften Sitzung von dem Server 304.
-
In 512 erzeugt der Client 302 einen einmaligen Kenncode (OTP) auf Grundlage des von dem Server 304 empfangenen, gemeinsam genutzten geheimen Schlüssels. In 514 sendet der Client 302 den auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugten OTP an den Server 304. Der Server 304 überprüft den OTP anhand des gemeinsam genutzten geheimen Schlüssels. Wenn der OTP überprüft ist, speichert der Server 304 den gemeinsam genutzten geheimen Schlüssel in einem Benutzerprofil, das dem Benutzer 322 zugehörig ist. In 516 empfängt der Client 302 eine Berechtigungsprüfungsantwort von dem Server 304. In 518 ermittelt der Client 302, ob die Berechtigungsprüfungsantwort angibt, dass die Berechtigung des Benutzers 322 geprüft ist. Wenn die Berechtigung des Benutzers 322 nicht geprüft ist, endet der Prozess 500. Wenn die Berechtigung des Benutzers 322 geprüft ist, setzt der Client 302 in 520 die auf Berechtigung geprüfte Sitzung mit dem Server 304 fort, in der dem Client 302 vollständige(r) Berechtigungen/Zugriff für/auf API-Vorgänge gewährt werden, um Zugriff auf Anwendungen und/oder Dienste zu erlangen, die durch den Server 304 oder einen weiteren Server bereitgestellt werden. In 522 speichert der Client 302 den gemeinsam genutzten geheimen Schlüssel in der Client-Vorgabenkomponente 312. Danach beendet die Client-Anwendung 306 den Prozess 500. Bei der Ausführungsform erfordern nachfolgende Anmeldungen von dem Benutzer 322, dass der Benutzer 322 die Benutzer-ID, das Kennwort und einen aktuellen OTP bereitstellt, der auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugt wird, um für den Server 304 auf Berechtigung geprüft zu werden, um Zugriff auf Anwendungen und Dienste zu erlangen, die durch den Server bereitgestellt werden.
-
Unter Bezugnahme auf 6 stellt diese Figur einen Ablaufplan eines beispielhaften Server-seitigen Prozesses für ein automatisches Aufrüsten auf eine zweistufige Berechtigungsprüfung gemäß einer veranschaulichenden Ausführungsform dar. Bei einer oder mehreren Ausführungsformen kann ein Prozess 600 in der Server-Anwendung 314 in 3 implementiert werden. In 602 empfängt die Server-Anwendung 314 des Servers 304 eine Benutzer-ID und ein Kennwort, die durch den Benutzer 322 bereitgestellt werden, von dem Client 302.
-
In 604 überprüft die Server-Anwendung 314 die Berechtigung des Benutzers 322 mithilfe eines ersten Berechtigungsprüfungsfaktors durch Überprüfen der Benutzer-ID und des Kennworts. In 606 baut die Server-Anwendung 314 eine auf Berechtigung geprüfte Sitzung mit dem Client 302 auf. Bei einer bestimmten Ausführungsform weist die auf Berechtigung geprüfte Sitzung eingeschränkte(n) Berechtigungen/Zugriff von API-Vorgängen für den Client 302 auf. In 608 ermittelt die Server-Anwendung 314, ob ein Aufrüsten des Benutzers 322 von einer Ein-Faktor-Berechtigungsprüfung auf eine Zwei-Faktor-Berechtigungsprüfung erforderlich ist. Wenn bestimmt wird, dass der Benutzer 322 ein Aufrüsten von einer Ein-Faktor-Berechtigungsprüfung auf eine Zwei-Faktor-Berechtigungsprüfung benötigt, erzeugt die Server-Anwendung 314 in 610 einen gemeinsam genutzten geheimen Schlüssel. In 612 sendet die Server-Anwendung 314 eine Anmeldeantwort, die den gemeinsam genutzten geheimen Schlüssel enthält, mithilfe der auf Berechtigung geprüften Sitzung an den Client 302. Als Reaktion auf das Empfangen des gemeinsam genutzten geheimen Schlüssels erzeugt der Client 302 einen einmaligen Kenncode (OTP) auf Grundlage des gemeinsam genutzten geheimen Schlüssels und sendet den auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugten OTP an den Server 304.
-
In 614 empfängt die Server-Anwendung 314 den OTP von dem Client 302. In 616 überprüft die Server-Anwendung 314 den OTP anhand des gemeinsam genutzten geheimen Schlüssels. Wenn der OTP überprüft ist, speichert die Server Anwendung 314 in 618 den gemeinsam genutzten geheimen Schlüssel in einem Benutzerprofil, das dem Benutzer 322 zugehörig ist. In 620 setzt der Server 304 die auf Berechtigung geprüfte Sitzung fort, in der dem Client 302 vollständige(r) Berechtigungen/Zugriff für/auf API-Vorgänge gewährt werden, um Zugriff auf Anwendungen und/oder Dienste zu erlangen, die durch den Server 304 oder einen weiteren Server bereitgestellt werden. In 622 sendet die Server-Anwendung 314 eine Berechtigungsprüfungsantwort an den Client 302, die die Fortsetzung der auf Berechtigung geprüften Sitzung angibt. Bei der Ausführungsform erfordern nachfolgende Anmeldungen von dem Benutzer 322, dass der Benutzer 322 die Benutzer-ID, das Kennwort und einen aktuellen OTP bereitstellt, der auf Grundlage des gemeinsam genutzten geheimen Schlüssels erzeugt wird, um für den Server auf Berechtigung geprüft zu werden, um Zugriff auf Anwendungen und/oder Dienste zu erlangen, die durch den Server 304 oder einen weiteren Server bereitgestellt werden. Wenn die Server-Anwendung 314 in 608 ermittelt, dass keine Zwei-Faktor-Berechtigungsprüfung erforderlich ist, sendet die Server-Anwendung 314 in 622 eine Berechtigungsprüfungsantwort an den Client 302, die angibt, dass die auf Berechtigung geprüfte Sitzung durch den Client 302 verwendet werden kann. In einem solchen Fall, in dem der Benutzer 322 nicht auf eine Zwei-Faktor-Berechtigungsprüfung aufgerüstet wird, muss der Benutzer 322 bei nachfolgenden Anmeldungen lediglich die Benutzer-ID und das Kennwort bereitstellen. Danach beendet die Server-Anwendung 314 den Prozess 600.
-
Auf diese Weise werden ein(e) auf einem Computer implementierte(s) Verfahren, System oder Vorrichtung und Computerprogrammprodukt in den veranschaulichenden Ausführungsformen bereitgestellt, um ein automatisches Aufrüsten eines Benutzers von einer einstufigen Berechtigungsprüfung auf eine zweistufige Berechtigungsprüfung und sonstige verwandte Merkmale, Funktionen oder Vorgänge zu ermöglichen. Wo eine Ausführungsform oder ein Abschnitt davon im Hinblick auf einen Typ einer Einheit beschrieben wird, werden das/die auf einem Computer implementierte Verfahren, System oder Vorrichtung, das Computerprogrammprodukt oder ein Abschnitt davon zur Verwendung mit einer geeigneten und vergleichbaren Ausprägung dieses Typs einer Einheit gestaltet oder konfiguriert.
-
Wo eine Ausführungsform als in einer Anwendung implementiert beschrieben wird, wird das Bereitstellen der Anwendung in einem Software-as-a-Service(SaaS)-Modell innerhalb des Umfangs der veranschaulichenden Ausführungsformen in Betracht gezogen. In einem SaaS-Modell wird die Fähigkeit der Anwendung, die eine Ausführungsform implementiert, einem Benutzer durch Ausführen der Anwendung in einer Cloud-Infrastruktur bereitgestellt. Der Benutzer kann mithilfe einer Vielfalt von Client-Einheiten durch eine Thin-Client-Schnittstelle wie zum Beispiel einen Web-Browser (z.B. eMail auf Grundlage des Web) oder sonstige einfache Client-Anwendungen auf die Anwendung zugreifen. Der Benutzer verwaltet oder steuert die zugrunde liegende Cloud-Infrastruktur einschließlich des Netzwerks, der Server, der Betriebssysteme oder des Speichers der Cloud-Infrastruktur nicht. In einigen Fällen verwaltet oder steuert der Benutzer möglicherweise nicht einmal die Fähigkeiten der Saas-Anwendung. In einigen sonstigen Fällen kann die SaaS-Implementierung der Anwendung eine mögliche Ausnahme von eingeschränkten benutzerspezifischen Anwendungskonfigurationseinstellungen zulassen.
-
Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt mit einem beliebigen Integrationsgrad technischer Details handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
-
Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
-
Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
-
Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
-
Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
-
Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
-
Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
-
Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.