studio
latest
false
Wichtig :
Es kann 1–2 Wochen dauern, bis die Lokalisierung neu veröffentlichter Inhalte verfügbar ist.
UiPath logo, featuring letters U and I in white

Studio-Benutzerhandbuch

Letzte Aktualisierung 18. Feb. 2026

Verwenden der zweistufigen Authentifizierung in codierten Automatisierungen

Dieses Tutorial zeigt, wie Sie Beispielcode einschließen können, der Codes für die zweistufige Authentifizierung für Ihre Automatisierungen generiert. Hier finden Sie die Möglichkeiten zum Implementieren des Codes für die zweistufige Authentifizierung:

  • Kopieren Sie den Code und fügen Sie ihn in eine CS-Datei Ihres Zielprojekts ein.
  • Use a sample NUPKG file in your project. When opting to use the sample NUPKG file, you have the capability to add the two-factor authentication as an activity within your XAML files.
    Tipp:

    Unabhängig davon, ob Sie den Beispielcode-Generator für die Zwei-Faktor-Authentifizierung in Ihre CS-Dateien (für codierte Automatisierungen) oder XAML-Dateien (für Low-Code-Automatisierungen) integrieren, denken Sie daran, dass Sie eine codierte Automatisierung in eine Low-Code-Automatisierung aufrufen können und umgekehrt. Weitere Informationen über hybride Automatisierungen finden Sie unter Erstellen hybrider Automatisierungen – Kombinieren von codierten und Low-Code-Workflows.

Kopieren und Einfügen des Codes in CS-Dateien

Um das Beispiel für die zweistufige Authentifizierung in Ihrer codierten Automatisierung zu verwenden, können Sie den folgenden Beispielcode kopieren und in eine CS-Datei aus Ihrem Zielprojekt einfügen.

Hinweis:

Der Beispielcode generiert alle 30 Sekunden einen neuen Authentifizierungscode. Wenn ein Authentifizierungscode beispielsweise nach 3 Stunden, 45 Minuten und 27 Sekunden generiert wird, ist dieser Code drei Sekunden lang verfügbar. Ein neuer Code wird dann nach 30 Sekunden generiert.

using System;
using System.Collections.Generic;
using UiPath.CodedWorkflows;
using System.Security.Cryptography;

namespace GenerateTwoFactorAuthenticationCode
{
    public class Workflow : CodedWorkflow
    {
        [Workflow]
        public string Execute(string secretKey)
        {
            return AuthenticationCode(secretKey);
        }

        private string AuthenticationCode(string secret)
        {
            // Step 1: Decode the base32 secret key
            byte[] key = Base32Decode(secret);

            // Step 2: Calculate the time step (current time divided by 30 seconds)
            long unixTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
            long timeStep = unixTime / 30;

            // Step 3: Convert time step to byte array (8 bytes, big-endian)
            byte[] timeBytes = BitConverter.GetBytes(timeStep);
            if (BitConverter.IsLittleEndian)
                Array.Reverse(timeBytes);

            // Step 4: Generate HMAC-SHA1 hash using the time step as message and secret key
            using (HMACSHA1 hmac = new HMACSHA1(key))
            {
                byte[] hash = hmac.ComputeHash(timeBytes);

                // Step 5: Extract dynamic binary code (4 bytes) from the hash
                int offset = hash[hash.Length - 1] & 0x0F;
                int binaryCode = (hash[offset] & 0x7F) << 24
                               | (hash[offset + 1] & 0xFF) << 16
                               | (hash[offset + 2] & 0xFF) << 8
                               | (hash[offset + 3] & 0xFF);

                // Step 6: Modulo to get a 6-digit code
                int otp = binaryCode % 1_000_000;

                // Return the OTP as a zero-padded 6-digit string
                return otp.ToString("D6");
            }
        }

        // Base32 decoding function to get the byte array from the base32-encoded key
        private static byte[] Base32Decode(string base32)
        {
            // Decode Base32-encoded string to byte array
            const string base32Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
            int bitBuffer = 0;
            int bitBufferLen = 0;
            var result = new List<byte>();

            foreach (char c in base32.ToUpper())
            {
                if (c == '=') break;

                int index = base32Chars.IndexOf(c);
                if (index < 0) throw new ArgumentException("Invalid Base32 character");

                bitBuffer = (bitBuffer << 5) | index;
                bitBufferLen += 5;

                if (bitBufferLen >= 8)
                {
                    result.Add((byte)(bitBuffer >> (bitBufferLen - 8)));
                    bitBufferLen -= 8;
                }
            }

            return result.ToArray();
        }
    }
}
using System;
using System.Collections.Generic;
using UiPath.CodedWorkflows;
using System.Security.Cryptography;

namespace GenerateTwoFactorAuthenticationCode
{
    public class Workflow : CodedWorkflow
    {
        [Workflow]
        public string Execute(string secretKey)
        {
            return AuthenticationCode(secretKey);
        }

        private string AuthenticationCode(string secret)
        {
            // Step 1: Decode the base32 secret key
            byte[] key = Base32Decode(secret);

            // Step 2: Calculate the time step (current time divided by 30 seconds)
            long unixTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
            long timeStep = unixTime / 30;

            // Step 3: Convert time step to byte array (8 bytes, big-endian)
            byte[] timeBytes = BitConverter.GetBytes(timeStep);
            if (BitConverter.IsLittleEndian)
                Array.Reverse(timeBytes);

            // Step 4: Generate HMAC-SHA1 hash using the time step as message and secret key
            using (HMACSHA1 hmac = new HMACSHA1(key))
            {
                byte[] hash = hmac.ComputeHash(timeBytes);

                // Step 5: Extract dynamic binary code (4 bytes) from the hash
                int offset = hash[hash.Length - 1] & 0x0F;
                int binaryCode = (hash[offset] & 0x7F) << 24
                               | (hash[offset + 1] & 0xFF) << 16
                               | (hash[offset + 2] & 0xFF) << 8
                               | (hash[offset + 3] & 0xFF);

                // Step 6: Modulo to get a 6-digit code
                int otp = binaryCode % 1_000_000;

                // Return the OTP as a zero-padded 6-digit string
                return otp.ToString("D6");
            }
        }

        // Base32 decoding function to get the byte array from the base32-encoded key
        private static byte[] Base32Decode(string base32)
        {
            // Decode Base32-encoded string to byte array
            const string base32Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
            int bitBuffer = 0;
            int bitBufferLen = 0;
            var result = new List<byte>();

            foreach (char c in base32.ToUpper())
            {
                if (c == '=') break;

                int index = base32Chars.IndexOf(c);
                if (index < 0) throw new ArgumentException("Invalid Base32 character");

                bitBuffer = (bitBuffer << 5) | index;
                bitBufferLen += 5;

                if (bitBufferLen >= 8)
                {
                    result.Add((byte)(bitBuffer >> (bitBufferLen - 8)));
                    bitBufferLen -= 8;
                }
            }

            return result.ToArray();
        }
    }
}

Use a sample NUPKG file

Wenn Sie eine NUPKG-Beispieldatei zum Einfügen des Codes für die zweistufige Authentifizierung in Ihre Automatisierungen verwenden möchten, gehen Sie wie folgt vor:

  1. Laden Sie die folgende NUPKG-Datei herunter: GenerateTwoFactorAuthenticationCode.nupkg.
  2. Laden Sie die heruntergeladene NUPKG-Datei in Ihren Orchestrator-Host- oder Mandanten-Feed hoch, auf die über Ihre Studio-Instanz zugegriffen werden kann. Weitere Informationen zum Hochladen der NUPKG-Datei als benutzerdefinierte Bibliothek in den Orchestrator finden Sie unter Manuelles Hochladen einer Bibliothek in Orchestrator.
  3. Öffnen Sie Ihr Studio-Projekt und öffnen Sie das Menü Pakete verwalten.
  4. Suchen Sie nach der NUPKG-Datei GenerateTwoFactorAuthenticationCode, die Sie zuvor in Ihrem Orchestrator-Host- oder Orchestrator-Mandanten-Feed gespeichert haben, und installieren Sie sie.

Abbildung 1. Die benutzerdefinierte Bibliothek im Menü „Pakete verwalten“

Die benutzerdefinierte Bibliothek im Menü „Pakete verwalten“

Nachdem Sie die Datei installiert haben, navigieren Sie zum Bereich Aktivitäten und suchen Sie GenerateTwoFactorAuthenticationCode. Ziehen Sie die Aktivität Get 2FA token in Ihre XAML-Dateien, um einen Authentifizierungscode für Ihre Automatisierungen zu generieren.

Abbildung 2. Das Codebeispiel von GenerateTwoFactorAuthentication im Aktivitätenbereich

Das GenerateTwoFactorAuthentication-Codebeispiel im Aktivitätenbereich

  • Kopieren und Einfügen des Codes in CS-Dateien
  • Use a sample NUPKG file

War diese Seite hilfreich?

Hilfe erhalten
RPA lernen – Automatisierungskurse
UiPath Community-Forum
Uipath Logo
Vertrauen und Sicherheit
© 2005–2026 UiPath. Alle Rechte vorbehalten