StoreFront

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

Dieser Artikel beschreibt, wie StoreFront und ein NetScaler ADC konfiguriert werden, damit sich Benutzer mit Entra ID über OIDC authentifizieren und anschließend 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 2511 oder höher
  • Microsoft Entra ID und ein Konto mit einer der folgenden Berechtigungen:
    • Cloud Application Administrator
    • Application Administrator
    • Global 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.

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-Ressource > Verwalten > App-Registrierungen, und wählen Sie dann Neue Registrierung aus.
  3. Benennen Sie die Anwendung, zum Beispiel NetScaler StoreFront Authentication.
  4. Wählen Sie unter Unterstützte Kontotypen die Option Nur Konten in diesem Organisationsverzeichnis aus.
  5. Wählen Sie unter Umleitungs-URI die Option Web für den Typ der Anwendung aus, die Sie erstellen möchten. Geben Sie die URI ein, an die das Zugriffstoken gesendet wird. Verwenden Sie das Format <NetScaler Virtual Server URL>/oauth/login, zum Beispiel https://netscalerentra.customer.com/oauth/login.

Screenshot der Azure Entra ID-Anwendungsregistrierung

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 aus. 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 während dieser Erstellungsphase sichtbar ist.

Screenshot der Azure NetScaler-Anmeldung

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 aus.
  3. Die Berechtigung User.Read ist standardmäßig bereits hinzugefügt.
  4. Fügen Sie openid und profile hinzu.
  5. Wählen Sie Administratorzustimmung für <Mandantenname> erteilen und akzeptieren Sie.

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

Screenshot der Azure-Berechtigungsvergabe

Citrix DaaS zur Aktivierung 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 StoreFront vertraut wird, ohne dass eine Authentifizierung erforderlich ist. 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.

Screenshot der XML-Vertrauenseinstellung in Azure

  1. (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 Sie ein NetScaler-Authentifizierungsprofil konfigurieren, das Sie an Ihren Gateway-VPN-Virtual-Server binden können. Diese Konfiguration weist den ADC an, wie Benutzer zur Anmeldung an einen externen OAuth-IdP (wie Microsoft Entra ID) umgeleitet werden und wie die nach der Authentifizierung empfangenen OAuth-Token verarbeitet werden. Es werden Endpunkte, Client-Anmeldeinformationen, Bereiche und die Art und Weise angegeben, wie der ADC Benutzerinformationen aus Token extrahiert.

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 verarbeitet die Benutzerauthentifizierung.

add authentication vserver EntraId_Authentication_VirtualServer SSL 0.0.0.0 443 \
  -state ENABLED \
  -authentication ON \
  -td 0 -appflowLog ENABLED \
  -noDefaultBindings NO
<!--NeedCopy-->

OAuth-Richtlinie und -Aktion erstellen

Die OAuth-Aktion gibt an, wie NetScaler ADC mit einem OAuth-IdP wie 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 das Feld userNameField auf oid, wodurch 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 Virtual 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 haben, 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 übergeben, damit dieses die Authentifizierung des Benutzers validieren und die Gruppenmitgliedschaft 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 übergeben, 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 "Eine Rewrite-Richtlinie zum Hinzufügen des OAUTH-Zugriffstokens zu nachfolgenden Benutzerauthentifizierungsanfragen"
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 "Eine Rewrite-Richtlinie zum Hinzufügen des OAUTH-Zugriffstokens zu nachfolgenden Benutzerauthentifizierungsanfragen"
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. Fügen Sie eine NetScaler Gateway-Instanz in StoreFront hinzu.

  2. Konfigurieren Sie die Citrix Gateways.

    • Setzen Sie den Anmeldetyp auf Domäne.

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

  3. Konfigurieren Sie das Gateway für den Remotezugriff für den Store, der die Citrix DaaS-Ressourcen aggregiert.

  4. Aktivieren und konfigurieren Sie die Entra ID-Authentifizierung vom NetScaler Gateway aus. 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-->

Entra ID SSO zu VDAs konfigurieren

Sobald Sie StoreFront und Ihr Citrix Gateway für die Authentifizierung von Benutzern mit Entra ID konfiguriert haben, können Sie Entra ID SSO zu VDAs aktivieren, ohne FAS zu benötigen. Aktivieren Sie dies erst, nachdem Sie die DaaS-Konfiguration abgeschlossen haben. Weitere Informationen finden Sie unter Microsoft Entra Single Sign-On. Dies erfordert die folgenden zusätzlichen Konfigurationen für StoreFront und den NetScaler ADC.

NetScaler ADC Content Switching konfigurieren

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 Flows generiert StoreFront ein Token, das von einem in Citrix Cloud laufenden 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 VPN-Virtual-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 Virtual 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-Virtual-Server des Gateways geleitet.

Load Balancer erstellen, um Daten vom Content Switcher an StoreFront weiterzuleiten

Wenn Sie bereits einen Load Balancer Virtual Server 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 Switch so konfigurieren, dass er den Datenverkehr direkt an diesen Virtual Server sendet. Andernfalls müssen Sie einen Load Balancer erstellen, um den Datenverkehr an die StoreFront-Server weiterzuleiten. Dies liegt daran, dass Content Switcher-Aktionen einen Virtual Server referenzieren 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 über seine IP-Adresse darstellt, und binden Sie ihn an einen SSL-Load-Balancer 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 über seinen 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 Client-Anfragen zu verarbeiten. Dieser Content Switching Virtual Server lauscht auf HTTPS-Verkehr auf Port 443 und leitet Anfragen entweder an den Gateway-VPN-Virtual-Server oder ü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 Ticket-Einlösung erstellen

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

Diese Richtlinie gleicht Anfragen ab, wenn die URL /Citrix/StoreEntraWeb/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 Webrichtlinie des StoreFront-Virtual-Servers. Sie können entweder den im vorherigen Schritt erstellten Load Balancer lb_vs oder einen vorhandenen Load Balancer Virtual Server verwenden, der Ihren StoreFront-Servern vorgelagert ist.

add cs action cs_lb_vs -targetLBVserver lb_vs
add cs policy cs_lb_vs_pol -rule "HTTP.REQ.URL.CONTAINS(\"/Citrix/StoreEntraWeb/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 beim Citrix Gateway zu authentifizieren und dann auf ihre virtuellen Desktops und Anwendungen zuzugreifen, ohne ihre Anmeldeinformationen erneut beim 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 Single Sign-On nur, wenn Sie die Azure Entra ID Enterprise-Anwendung konfiguriert und StoreFront mit dem Mandanten aktualisiert haben. Wenn Sie diese Einstellung für Stores aktivieren, die derzeit Entra ID mit SAML ohne diese Einstellungen verwenden, kann dies bestehendes Single Sign-On potenziell unterbrechen, wenn Sie FAS verwenden.
  2. Wenn Sie die Einstellung für bestehende Stores aktivieren, die Entra ID mit SAML verwenden, bei denen die VDAs derzeit kein SSO haben, kann der Start verzögert werden und/oder es können Fehler im Zusammenhang mit den Entra ID-Authentifizierungseinstellungen auftreten.
Entra ID-Authentifizierung über OIDC und Single Sign-On zu VDA