StoreFront

Entra ID-Authentifizierung über OIDC und Single Sign-On zu VDA

Dieser Artikel beschreibt, wie StoreFront und ein NetScaler ADC konfiguriert werden, damit Benutzer sich mit Entra ID über OIDC authentifizieren und dann per Single Sign-On bei einem Entra-verbundenen VDA anmelden können.

WICHTIG:

Die Entra ID-Authentifizierung über OIDC und Single Sign-On zu VDA befindet sich derzeit in der Vorschauphase. Diese Funktion wird ohne Support bereitgestellt und wird noch nicht für den Einsatz in Produktionsumgebungen empfohlen.

Voraussetzungen

  • NetScaler ADC
  • StoreFront 2507 LTSR CU1 oder höher
  • Moderne Benutzeroberfläche
  • Microsoft Entra ID und ein Konto mit einer der folgenden Berechtigungen:
    • Cloud-Anwendungsadministrator
    • Anwendungsadministrator
    • Globaler Administrator
  • DaaS-Abonnement mit Konnektoren. Dies ist nicht mit CVAD verfügbar.
  • Veröffentlichte Desktops und/oder Apps
  • Für Starts aus einem Webbrowser in die Citrix Workspace-App, um SSO zu VDAs zu ermöglichen, Citrix Web Extension.

Bekannte Probleme und Einschränkungen

  • Das Aktivieren von Federated Authentication Service in einem Store, der die Entra ID-Authentifizierung verwendet, wird nicht unterstützt und kann zu Startfehlern führen.
  • Wenn ein Store eine Citrix Virtual Apps and Desktops-Site enthält und ein Benutzer sich mit Entra ID über OIDC authentifiziert, listet StoreFront keine Ressourcen von dieser Site auf. [WSP-30880]
  • Entra ID SSO zu VDAs wird nur bei Verwendung der OIDC-basierten Authentifizierung unterstützt. Es wird nicht mit SAML unterstützt.
  • StoreFront verbraucht viel RAM, wenn ein Benutzer Mitglied vieler Entra-Gruppen ist. [WSP-29276]

Entra ID-Authentifizierung mit OIDC

Dieser Abschnitt beschreibt, wie NetScaler und StoreFront konfiguriert werden, damit sich Benutzer mit Entra ID authentifizieren können. In dieser Konfiguration können Benutzer entweder eine Hybrididentität oder eine reine Entra-Identität ohne Active Directory-Konto haben.

Erstellen einer Microsoft Azure Entra ID-Anwendung

Eine App-Registrierung in Microsoft Entra ID definiert Ihre Anwendung so, dass Entra ID sie erkennt – in diesem Fall NetScaler OIDC. Diese Registrierung verwaltet auch die Authentifizierungs- und Autorisierungsanfragen der Anwendung. Da OAuth einen vertrauenswürdigen Identitätsanbieter (IdP) zur Authentifizierung von Benutzern und zur Ausstellung von Token erfordert, teilt die Registrierung Ihrer App Entra ID mit: „Diese Anwendung verwendet Sie als ihren IdP für OAuth-Flows.“

  1. Melden Sie sich beim Azure-Portal für den Entra ID-Mandanten an, den Sie für die NetScaler- oder StoreFront-Authentifizierung verwenden.
  2. Gehen Sie zu Microsoft Entra ID resource > Manage > App registrations, und wählen Sie dann New registration.
  3. Benennen Sie die Anwendung, zum Beispiel NetScaler StoreFront Authentication.
  4. Wählen Sie unter Supported account types die Option Accounts in this organizational directory only.
  5. Wählen Sie unter Redirect URI den Typ Web für die Anwendung, die Sie erstellen möchten. Geben Sie den URI ein, an den das Zugriffstoken gesendet wird. Verwenden Sie das Format <NetScaler Virtual Server URL>/oauth/login, zum Beispiel https://netscalerentra.customer.com/oauth/login.

    Azure ID

Client-Geheimnis erstellen

So erstellen Sie ein Client-Geheimnis:

  1. Nachdem Sie die Anwendung registriert haben, gehen Sie zu Verwalten > Zertifikate & Geheimnisse.
  2. Wählen Sie Client-Geheimnisse und dann Neues Client-Geheimnis. Ihre App verwendet diese Anmeldeinformationen, um sicher mit dem IdP zu kommunizieren und Token anzufordern.
  3. Geben Sie eine Beschreibung des Geheimnisses und eine Dauer an.
  4. Nachdem Sie das Geheimnis erstellt haben, notieren Sie den Geheimniswert, da Sie ihn später im Einrichtungsprozess benötigen und er nur in dieser Erstellungsphase sichtbar ist.

Azure NetScaler

Anwendungsberechtigungen konfigurieren

So konfigurieren Sie App-Berechtigungen:

  1. Gehen Sie zu Verwalten > App-Registrierungen und wählen Sie dann Ihre Anwendung aus.
  2. Wählen Sie Verwalten > API-Berechtigungen.
  3. Die Berechtigung User.Read ist bereits standardmäßig hinzugefügt.
  4. Fügen Sie openid und profile hinzu.
  5. Wählen Sie Administratorzustimmung für <tenant name> erteilen und akzeptieren Sie.

„Administratorzustimmung erteilen für“ in API-Berechtigungen in Microsoft Entra ID bedeutet, dass ein Administrator im Namen aller Benutzer in der Organisation die Genehmigung erteilt, dass eine Anwendung mit den angeforderten Berechtigungen auf bestimmte Ressourcen oder APIs zugreifen darf.

Azure-Berechtigung erteilen

Citrix DaaS zum Aktivieren des XML-Vertrauens konfigurieren

Standardmäßig authentifiziert Citrix DaaS Anfragen mithilfe der Active Directory-Anmeldeinformationen des Benutzers. Bei der Entra ID-Authentifizierung verfügt StoreFront nicht über die Anmeldeinformationen. Daher müssen Sie DaaS so konfigurieren, dass es StoreFront vertraut, ohne eine Authentifizierung zu verlangen. Es wird dringend empfohlen, stattdessen Sicherheitsschlüssel zu aktivieren, um eine Authentifizierung auf Dienstebene bereitzustellen.

  1. Melden Sie sich bei Citrix Cloud an und gehen Sie zur DaaS-Konsole.
  2. Gehen Sie zu Einstellungen.
  3. Aktivieren Sie XML-Vertrauen.

    Azure-Berechtigung erteilen

  4. (Optionaler Schritt) Für zusätzliche Sicherheit können Sie Sicherheitsschlüssel zwischen DaaS und StoreFront aktivieren. Weitere Informationen finden Sie unter Sicherheitsschlüssel verwalten in der Citrix DaaS™-Dokumentation.

NetScaler-Authentifizierungsprofil konfigurieren

Dieser Abschnitt beschreibt, wie ein NetScaler-Authentifizierungsprofil konfiguriert wird, das Sie an Ihren Gateway-VPN-Virtual-Server binden können. Diese Konfiguration weist den ADC an, wie Benutzer zur Anmeldung zu einem externen OAuth-IdP (wie Microsoft Entra ID) umgeleitet werden sollen und wie die nach der Authentifizierung empfangenen OAuth-Token zu verarbeiten sind. Es werden Endpunkte, Client-Anmeldeinformationen, Bereiche und die Art und Weise, wie der ADC Benutzerinformationen aus Token extrahiert, angegeben.

Sie benötigen das Client-Geheimnis aus den vorherigen Schritten und die Microsoft Entra ID-Authentifizierungsendpunkte. Die Authentifizierungsendpunkte finden Sie im Azure-Portal, indem Sie zu Ihrer App-Registrierungsübersicht navigieren und auf die Registerkarte Endpunkte klicken.

Authentifizierungs-Virtual-Server erstellen

Der Authentifizierungs-Virtual-Server übernimmt die Benutzerauthentifizierung.

add authentication vserver EntraId_Authentication_VirtualServer SSL 0.0.0.0 443 \
  -state ENABLED \
  -authentication ON \
  -td 0 -appflowLog ENABLED \
  -noDefaultBindings NO
bind ssl vserver EntraId_Authentication_VirtualServer \
  -certkeyName <Certificate Key Name>
<!--NeedCopy-->

OAuth-Richtlinie und -Aktion erstellen

Die OAuth-Aktion gibt an, wie NetScaler ADC mit einem OAuth-IdP wie z. B. Microsoft Entra ID interagiert. Diese Aktion ermöglicht es dem Citrix Gateway, Benutzer zur Anmeldung an den IdP umzuleiten und das zurückgegebene OAuth-Token zu verarbeiten. Sie setzt den userNameField auf oid, was dazu führt, dass das Gateway die OID als Benutzernamen übergibt, wenn es sich bei StoreFront authentifiziert. StoreFront überprüft, ob die OID mit den Details übereinstimmt, die es beim Nachschlagen des Entra ID-Zugriffstokens erhält, andernfalls schlägt die Authentifizierung fehl.

Sie benötigen die Client-ID und das Client-Geheimnis aus den vorherigen Schritten.

add authentication OAuthAction EntraId_Oauth_Server \
  -authorizationEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/authorize\?prompt=login" \
  -tokenEndpoint "https://login.microsoftonline.com/<TenantId>/oauth2/v2.0/token" \
  -clientID <ClientId> \
  -clientSecret <ClientSecret> \
  -Attribute1 email \
  -Attribute2 family_name \
  -Attribute3 given_name \
  -Attribute4 upn \
  -CertEndpoint "https://login.microsoftonline.com/<TenantId>/discovery/v2.0/keys" \
  -userNameField oid \
  -allowedAlgorithms HS256 RS256 RS512 \
  -PKCE ENABLED \
  -tokenEndpointAuthMethod client_secret_post \
  -OAuthType GENERIC \
  -grantType CODE \
  -refreshInterval 1440
add authentication Policy EntraId_Authentication_Policy \
  -rule true \
  -action EntraId_Oauth_Server
<!--NeedCopy-->

Der authorizationEndpoint enthält den Abfragezeichenfolgenparameter prompt=login, sodass Benutzer zur erneuten Authentifizierung gezwungen werden, wenn sie versuchen, über den NetScaler auf StoreFront zuzugreifen.

Authentifizierungsrichtlinie an den virtuellen Server binden

bind authentication vserver EntraId_Authentication_VirtualServer \
  -policy EntraId_Authentication_Policy \
  -priority 100 \
  -gotoPriorityExpression END
<!--NeedCopy-->

Authentifizierungsprofil erstellen

add authentication authnProfile EntraId_Auth_Profile \
  -authnVsName EntraId_Authentication_VirtualServer \
  -AuthenticationLevel 0
<!--NeedCopy-->

VPN Virtual Server erstellen und Authentifizierungsprofil binden

Führen Sie die Schritte 1, 2 und 4 aus NetScaler Gateway in StoreFront integrieren aus, indem Sie das in den vorherigen Schritten erstellte Authentifizierungsprofil verwenden.

Alternativ können Sie, wenn Sie bereits ein geeignetes Citrix Gateway besitzen, das neue Authentifizierungsprofil daran binden. Die Ausführung dieses Befehls ersetzt das vorhandene Authentifizierungsprofil.

set vpn vserver <StoreFront ICA Proxy vServer> \
  -authentication ON \
  -authnProfile EntraId_Auth_Profile
<!--NeedCopy-->

Entra ID Token-Injektionskonfiguration für SSO zu StoreFront

Nachdem das Citrix Gateway den Benutzer authentifiziert hat, muss es ausreichende Informationen an StoreFront übermitteln, damit dieses die Authentifizierung des Benutzers validieren und die Gruppenzugehörigkeit nachschlagen kann. Standardmäßig sendet das Citrix Gateway nur den Active Directory-Benutzernamen und das Kennwort. Im Falle der Entra ID-Authentifizierung muss es das Entra ID-Zugriffstoken übermitteln, damit StoreFront Benutzerinformationen mithilfe der Microsoft Graph API nachschlagen kann. Um dies zu erreichen, müssen Sie eine Rewrite-Richtlinie hinzufügen, die das Entra ID-Token dem Aufruf hinzufügt, den es zur Authentifizierung des Benutzers bei StoreFront tätigt. Wenn die Rewrite-Richtlinie für das Entra ID-Zugriffstoken nicht wirksam wird, schlägt die Anmeldung fehl. Wenn die Rewrite-Richtlinienfunktion standardmäßig nicht bereits aktiviert ist, müssen Sie sie zuerst aktivieren.

enable ns feature Rewrite
add rewrite action EntraId_Oauth_Insert_AccessToken_Header insert_http_header X-Citrix-OIDC-Access-Token "AAA.USER.ATTRIBUTE(\"accesstoken\")" \
  -comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
add rewrite policy EntraId_Oauth_Insert_AccessToken_Policy "HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"gatewayauth/login\") || HTTP.REQ.URL.TO_LOWER.ENDSWITH(\"citrixagbasic/authenticate\")" EntraId_Oauth_Insert_AccessToken_Header \
  -comment "A rewrite policy to add the OAUTH access_token to subsequent user authentication requests"
bind vpn vserver <StoreFront ICA Proxy vServer> \
  -policy EntraId_Oauth_Insert_AccessToken_Policy \
  -priority 100 \
  -gotoPriorityExpression END \
  -type REQUEST
<!--NeedCopy-->

Citrix Gateway in StoreFront konfigurieren

  1. Eine NetScaler Gateway-Instanz in StoreFront hinzufügen.

  2. Die Citrix Gateways konfigurieren.

    • Legen Sie den Anmeldetyp auf Domäne fest.

    • Geben Sie eine gültige Callback-URL an. Dies ist für die Entra ID-Authentifizierung mit StoreFront erforderlich.

  3. Das Gateway für den Fernzugriff konfigurieren für den Store, der die Citrix DaaS-Ressourcen aggregiert.

  4. Aktivieren und konfigurieren Sie die Entra ID-Authentifizierung über NetScaler Gateway. Führen Sie das folgende PowerShell-Skript aus, wobei Sie die Mandanten-ID durch die ID Ihres Entra ID-Mandanten und /Citrix/EntraStore durch den Store-Pfad ersetzen.

  $store = Get-STFStoreService /Citrix/EntraStore
  $authenticationService = Get-STFAuthenticationService -Store $store
  Set-STFEntraIdSettings -AuthenticationService $authenticationService -TenantId "<Your tenant id>" -Enabled $true
  <!--NeedCopy-->

Konfigurieren von Entra ID-SSO für VDAs

Sobald Sie StoreFront und Ihr Citrix Gateway für die Authentifizierung von Benutzern mit Entra ID konfiguriert haben, können Sie Entra ID SSO für VDAs ohne FAS aktivieren. Aktivieren Sie dies erst, nachdem Sie die DaaS-Konfiguration abgeschlossen haben. Weitere Informationen finden Sie unter Microsoft Entra einmaliges Anmelden. Dies erfordert die folgende zusätzliche Konfiguration für StoreFront und den NetScaler ADC.

Konfigurieren des NetScaler ADC Content Switching

Normalerweise gehen alle Anfragen an StoreFront über den Gateway-VServer und erfordern daher eine Authentifizierung. Wenn der Benutzer einen Entra ID-verbundenen VDA startet, muss die Citrix Workspace-App sich erneut bei Azure authentifizieren (SSO, wenn die Entra ID-Sitzung noch gültig ist) und ein Zugriffstoken abrufen. Als Teil dieses Ablaufs generiert StoreFront ein Token, das von einem in Citrix Cloud ausgeführten Dienst validiert werden muss. Dieser Dienst muss in der Lage sein, den StoreFront-Endpunkt /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket aufzurufen, um das Token zu validieren. Da dieser Dienst keinen Zugriff auf die NetScaler-Sitzung hat, ist es notwendig, den virtuellen VPN-Dienst für Aufrufe zum Einlösen des Tickets zu umgehen. Um dies zu erreichen, können Sie einen Content-Switcher verwenden.

Diagramm, das den Anforderungsfluss mit dem Content-Switcher zeigt

Aufrufe an /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket werden an einen Load Balancer geleitet, der die Anfragen an StoreFront weiterleitet und dabei das Gateway umgeht. Beachten Sie, dass der Load Balancer erforderlich ist, da der Content Switcher nicht so konfiguriert werden kann, dass er den Datenverkehr direkt an eine URL leitet, und einen virtuellen Server als Ziel benötigt. Der Load Balancer führt kein Load Balancing durch, sondern leitet den Datenverkehr lediglich an StoreFront weiter. Wenn Sie bereits einen geeigneten StoreFront-Load Balancer auf derselben Maschine haben, können Sie diesen stattdessen verwenden.

Alle anderen Aufrufe werden an den VPN-virtuellen Server des Gateways geleitet.

Lastenausgleich erstellen zur Weiterleitung vom Content-Switcher an StoreFront

Wenn Sie bereits einen virtuellen Lastenausgleichsserver haben, der Ihrer StoreFront-Servergruppe vorgelagert ist und auf derselben Maschine wie das Gateway läuft, können Sie diesen Schritt überspringen und den Content-Switcher so konfigurieren, dass er den Datenverkehr direkt an diesen virtuellen Server sendet. Andernfalls müssen Sie einen Lastenausgleich erstellen, um den Datenverkehr an die StoreFront-Server weiterzuleiten. Dies liegt daran, dass Content-Switcher-Aktionen auf einen virtuellen Server verweisen müssen.

Die Schritte unterscheiden sich geringfügig, je nachdem, ob StoreFront für HTTPS (empfohlen) oder HTTP konfiguriert ist.

StoreFront ist für HTTPS konfiguriert

Erstellen Sie einen Dienst stf_srv, der StoreFront unter Verwendung seiner IP-Adresse darstellt, und binden Sie ihn an einen SSL-Lastenausgleich ohne Persistenz.

add service stf_srv <StoreFront Ip Address> SSL 443
add lb vserver lb_vs SSL <lb_vs Ip Address> 443 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->
StoreFront ist für HTTP konfiguriert

Erstellen Sie einen Dienst stf_srv, der StoreFront unter Verwendung seines FQDN darstellt, und binden Sie ihn an einen HTTP-Load-Balancer ohne Persistenz.

add server storefront1 <storefront fqdn>
add service stf_srv storefront1 HTTP 80
add lb vserver lb_vs HTTP 0.0.0.0 0 -persistenceType NONE -cltTimeout 180
bind lb vserver lb_vs stf_srv
<!--NeedCopy-->

SSL-Content-Switching-Virtual-Server erstellen

Erstellen Sie einen SSL-Content-Switching-Virtual-Server, um Clientanfragen zu verarbeiten. Dieser Content-Switching-Virtual-Server überwacht den HTTPS-Datenverkehr auf Port 443 und leitet Anfragen entweder an den Gateway-VPN-Virtual-Server weiter oder leitet sie über den Load Balancer an StoreFront weiter.

Standardmäßig ist Content Switching deaktiviert, daher müssen Sie es aktivieren, falls Sie dies noch nicht getan haben.

enable feature CS
add cs vserver cs_vs SSL <cs_vs Ip Address> 443 -cltTimeout 180 -persistenceType NONE
bind ssl vserver cs_vs -certkeyName <Certificate Name>
<!--NeedCopy-->

Content-Switching-Richtlinie für die Ticket-Einlösung erstellen

Erstellen Sie eine Content-Switching-Richtlinie für den Lastausgleich basierend auf einer URL, die einen StoreFront-Ticket-Einlösungspfad enthält.

Diese Richtlinie gleicht Anfragen ab, wenn die URL /Citrix/<StoreWeb>/Tickets/RedeemStoreTicket enthält, und leitet sie an den Load Balancer weiter, ohne den VPN-Virtual-Server zu durchlaufen.

Ersetzen Sie StoreEntraWeb durch den Namen der StoreFront-Website aus der StoreFront-Virtual-Server-Webrichtlinie. Sie können entweder den in einem früheren Schritt erstellten Load Balancer lb_vs oder einen vorhandenen Load-Balancer-Virtual-Server verwenden, der Ihren StoreFront-Servern vorgeschaltet ist.

add cs action cs_lb_vs -targetLBVserver lb_vs
add cs policy cs_lb_vs_pol -rule "HTTP.REQ.URL.CONTAINS(\"/Citrix/<StoreWeb>/Tickets/RedeemStoreTicket\")" -action cs_lb_vs
bind cs vserver cs_vs -policyName cs_lb_vs_pol -priority 100
<!--NeedCopy-->

Content-Switching-Richtlinie für den gesamten anderen Datenverkehr erstellen

Erstellen Sie eine Catch-All-Content-Switching-Richtlinie, um den gesamten anderen StoreFront-Datenverkehr zur Authentifizierung über den VPN-Virtual-Server zu senden.

add cs action cs_vpn_vs -targetVserver <VPN vServer>
add cs policy cs_vpn_pol -rule TRUE -action cs_vpn_vs
bind cs vserver cs_vs -policyName cs_vpn_pol -priority 110
<!--NeedCopy-->

VDA Entra ID Single Sign-On konfigurieren

Single Sign-On ermöglicht es Benutzern, sich einmal anzumelden, wenn sie sich bei Citrix Gateway anmelden, und dann auf ihre virtuellen Desktops und Anwendungen zuzugreifen, ohne ihre Anmeldeinformationen erneut im VDA eingeben zu müssen.

$store = Get-STFStoreService /Citrix/EntraStore
Set-STFStoreLaunchOptions -StoreService $store -EntraIdSsoEnabled $true
<!--NeedCopy-->

Überlegungen zum Aktivieren oder Deaktivieren von Entra ID SSO

  1. Aktivieren Sie Entra ID Single Sign-On erst, wenn Sie alle unter Microsoft Entra Single Sign-On beschriebenen Konfigurationen abgeschlossen haben. Andernfalls schlägt Single Sign-On fehl, und Benutzer können Startverzögerungen oder Fehler erfahren.
Entra ID-Authentifizierung über OIDC und Single Sign-On zu VDA