Problembehandlung bei der Sicherheit
Gilt für: Windows Azure Pack
In diesem Thema wird die Behandlung von Problemen im Zusammenhang mit Der Sicherheit und Authentifizierung in Windows Azure Pack für Windows Server beschrieben. Viele Probleme können behoben werden, indem Sie die Prüfliste für Anmeldeinformationen in diesem Thema lesen. Es werden Empfehlungen für die folgenden Probleme bereitgestellt:
Setzen Sie nach der Integration von AD FS das Verwaltungsportal zurück, um AD zu verwenden.
Nach der Integration von AD FS kann nicht mehr auf das Mandantenportal zugegriffen werden.
Abrufen eines Tokens mit dem Cmdlet Get-MgmtSvcToken
Programmgesteuertes Verwenden von Mandantenzertifikaten
Ersetzen eines selbstsignierten Zertifikats durch ein vertrauenswürdiges Zertifikat
Beheben von Zertifikatwarnungen
Anmelden beim Verwaltungsportal über mehrere Konten
Überprüfen der SSL/TLS-Einstellungen
Prüfliste für Anmeldeinformationen
Die folgende Checkliste enthält bewährte Methoden zum Konfigurieren von Zertifikaten, Benutzernamen und Kennwörtern für Windows Azure Pack und die produkte und anbieter, die es verwendet.
Für Tests oder Nicht-Internet-bezogene Komponenten wie das Verwaltungsportal für Administratoren oder die Admin-API können Sie die Microsoft-Zertifizierungsstelle verwenden, um selbstsignierte Zertifikate zu erstellen.
Verwenden Sie für Komponenten mit Internetzugriff, z. B. das Verwaltungsportal für Mandanten und die öffentliche Mandanten-API, eine vertrauenswürdige öffentliche Zertifizierungsstelle.
Konfigurieren Sie die Anwendungspoolidentitäten für Service Provider Foundation in Internetinformationsdienste (IIS) auf dem Server, auf dem Service Provider Foundation ausgeführt wird, so dass sie das Konto für Domänenbenutzeranmeldeinformationen verwenden. Die Verwendung von Netzwerkdiensten wird nicht empfohlen.
Konfigurieren Sie die Anwendungspoolidentitäten auf den Servern, auf denen System Center 2012 R2 Virtual Machine Manager und Service Provider Foundation ausgeführt wird, um dasselbe Domänenkonto zu verwenden, das über Anmelde-als-Dienst-Rechte verfügt.
Konfigurieren Sie Service Provider Foundation für die Verwendung der Standardauthentifizierung in IIS.
Konfigurieren Sie ein lokales Benutzerkonto mit Administratorrechten, um Mitglied der VMM-, Admin-, Anbieter- und Nutzungsgruppen auf dem Server zu sein, auf dem Service Provider Foundation ausgeführt wird. Verwenden Sie dieses lokale Benutzerkonto, um den Service Provider Foundation-Endpunkt bei Windows Azure Pack für Windows Server zu registrieren.
Weitere Informationen finden Sie im Blogbeitrag Problembehandlung für Windows Azure Pack, Service Provider Foundation & Virtual Machine Manager. Eine Übersicht über die Service Provider Foundation-Webdienste finden Sie unter Verwalten von Webdiensten und Connections in Service Provider Foundation. Siehe auch Übersicht über die Windows Azure Pack-Authentifizierung.
Nach der Integration von AD FS kann nicht mehr auf das Mandantenportal zugegriffen werden.
Bezieht sich auf: Konfigurieren Active Directory-Verbunddienste (AD FS) für Windows Azure Pack
Problem
Der Mandantenanmeldebildschirm wird nach dem Konfigurieren von AD FS (Active Directory-Verbunddienste (AD FS)) nicht angezeigt oder kann nicht auf das Verwaltungsportal für Mandanten zugreifen.
Empfehlung
Nachdem Sie AD FS in der Domäne integriert haben, in der Windows Azure Pack installiert ist, wird die Anmeldeseite direkt zum Portal umgangen. Dies ist das erwartete Browserverhalten.
Wenn Sie nicht auf das Verwaltungsportal für Mandanten zugreifen können, verwenden Sie Server-Manager, um ADSI-Bearbeitung auszuführen, und überprüfen Sie, ob Ihr AD SF-Server über einen Dienstprinzipalnamen (Service Principal Name, SPN) verfügt. Der SPN sollte in der Form http/myADFSServer vorliegen.
Nach oben
Setzen Sie nach der Integration von AD FS das Verwaltungsportal zurück, um AD zu verwenden.
Bezieht sich auf: Konfigurieren Active Directory-Verbunddienste (AD FS) für Windows Azure Pack
Problem
Nach der Integration von Active Directory-Verbunddienste (AD FS) (AD FS) möchten Sie zur Verwendung von Active Directory (AD) für das Verwaltungsportal zurückkehren.
Empfehlung
Sie müssen das Vertrauen zwischen dem Verwaltungsportal für Administratoren und der Windows-Authentifizierung-Website wie bei AD FS wiederherstellen. Der Windows-Authentifizierung Standort ist Port 30072. Sie können die Windows PowerShell Cmdlets Set-MgmtSvcRelyingPartySettigns und Set-MgmtSvcIdentityProviderSettings verwenden.
Abrufen eines Tokens mit dem Cmdlet Get-MgmtSvcToken
Bezieht sich auf: Windows Azure Pack für Windows Server Automation mit Windows PowerShell
Problem
Der Get-MgmtSvcToken gibt das Token nicht wie erwartet zurück.
Empfehlung
Dies kann ein Problem sein, wenn das Cmdlet Get-MgmtSvcToken Active Directory-Verbunddienste (AD FS) (AD FS) nicht ordnungsgemäß verwendet. Das folgende Skript definiert die Funktion Get-AdfsToken als Problemumgehung.
function Get-AdfsToken([string]$adfsAddress, [PSCredential]$credential)
{
$clientRealm = 'http://azureservices/AdminSite'
$allowSelfSignCertificates = $true
Add-Type -AssemblyName 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
Add-Type -AssemblyName 'System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
$identityProviderEndpoint = New-Object -TypeName System.ServiceModel.EndpointAddress -ArgumentList ($adfsAddress + '/adfs/services/trust/13/usernamemixed')
$identityProviderBinding = New-Object -TypeName System.ServiceModel.WS2007HttpBinding -ArgumentList ([System.ServiceModel.SecurityMode]::TransportWithMessageCredential)
$identityProviderBinding.Security.Message.EstablishSecurityContext = $false
$identityProviderBinding.Security.Message.ClientCredentialType = 'UserName'
$identityProviderBinding.Security.Transport.ClientCredentialType = 'None'
$trustChannelFactory = New-Object -TypeName System.ServiceModel.Security.WSTrustChannelFactory -ArgumentList $identityProviderBinding, $identityProviderEndpoint
$trustChannelFactory.TrustVersion = [System.ServiceModel.Security.TrustVersion]::WSTrust13
if ($allowSelfSignCertificates)
{
$certificateAuthentication = New-Object -TypeName System.ServiceModel.Security.X509ServiceCertificateAuthentication
$certificateAuthentication.CertificateValidationMode = 'None'
$trustChannelFactory.Credentials.ServiceCertificate.SslCertificateAuthentication = $certificateAuthentication
}
$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($credential.Password)
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringUni($ptr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeCoTaskMemUnicode($ptr)
$trustChannelFactory.Credentials.SupportInteractive = $false
$trustChannelFactory.Credentials.UserName.UserName = $credential.UserName
$trustChannelFactory.Credentials.UserName.Password = $password #$credential.Password
$rst = New-Object -TypeName System.IdentityModel.Protocols.WSTrust.RequestSecurityToken -ArgumentList ([System.IdentityModel.Protocols.WSTrust.RequestTypes]::Issue)
$rst.AppliesTo = New-Object -TypeName System.IdentityModel.Protocols.WSTrust.EndpointReference -ArgumentList $clientRealm
$rst.TokenType = 'urn:ietf:params:oauth:token-type:jwt'
$rst.KeyType = [System.IdentityModel.Protocols.WSTrust.KeyTypes]::Bearer
$rstr = New-Object -TypeName System.IdentityModel.Protocols.WSTrust.RequestSecurityTokenResponse
$channel = $trustChannelFactory.CreateChannel()
$token = $channel.Issue($rst, [ref] $rstr)
$tokenString = ([System.IdentityModel.Tokens.GenericXmlSecurityToken]$token).TokenXml.InnerText;
$result = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($tokenString))
return $result
}
# Fill in values
$adfsAddress = 'https://adfshost'
$username = 'domain\username'
$password = 'password'
$securePassword = ConvertTo-SecureString -String $password -AsPlainText -Force
$credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username,$securePassword
$token = Get-AdfsToken -adfsAddress $adfsAddress -credential $credential
$token
Nach oben
Programmgesteuertes Verwenden von Mandantenzertifikaten
Bezieht sich auf: Service Provider Foundation-Entwicklerhandbuch
Problem
Sie müssen ein Zertifikat erstellen und es in das Verwaltungsportal für Mandanten hochladen und es dann programmgesteuert verwenden können.
Empfehlung
Gehen Sie dazu wie folgt vor:
Erstellen Sie ein Zertifikat (es kann selbstsigniert sein). Es sollte über eine .cer Dateierweiterung verfügen.
Klicken Sie im Verwaltungsportal für Mandanten auf der Seite Mein Konto auf Verwaltungszertifikate.
Übergeben Sie das Zertifikat im Header der Anforderung zur Authentifizierung an die öffentliche Mandanten-API, wie im folgenden Beispiel gezeigt.
Hinweis
Sie können nur auf das Abonnement zugreifen, dem dieses Zertifikat zugewiesen ist. Sie können das Abonnement nicht über die öffentliche Mandanten-API löschen.
X509Certificate2 mycert3 = new X509Certificate2("C:\\WorkDocs\\Test\\Management Certs\\myCert.cer"); HttpClient httpClient = new HttpClient(); var handler = new WebRequestHandler(); handler.ClientCertificates.Add(mycert3); handler.PreAuthenticate = true; httpClient = new HttpClient(handler); string tenantPublicEndpoint = "https://test.fabrikam.com:30006/"; string subscriptionid = " 7d31eb89-bb1e-4b16-aa3c-993f978b6bc1"; string subscriptionEndpoint = tenantPublicEndpoint + subscriptionid+ "/services/webspaces/defaultwebspace/sites"; var response = httpClient.GetAsync(subscriptionEndpoint); var resultsStr = response.Result.Content.ReadAsStringAsync().Result;
Nach oben
Ersetzen eines selbstsignierten Zertifikats durch ein vertrauenswürdiges Zertifikat
Bezieht sich auf: Verwalten von Windows Azure Pack für Windows Server
Problem
Nachdem Sie ein selbstsigniertes Zertifikat für eine Testumgebung verwendet haben, möchten Sie das Zertifikat durch ein Zertifikat ersetzen, das von einer vertrauenswürdigen Zertifizierungsstelle ausgestellt wird.
Empfehlung
Installieren Sie das Zertifikat im persönlichen Speicher des lokalen Computers, und ordnen Sie das Zertifikat jeder Website im Internetinformationsdienste-Manager (IIS) zu. Das Zertifikat sollte die folgenden Anforderungen erfüllen:
Von einer vertrauenswürdigen Zertifizierungsstelle stammen
Gültiger Datumsbereich
Bereitstellen einer gültigen Nutzungs- und Bestimmungsbestimmung
Bereitstellen der Serverauthentifizierung
Übereinstimmung des Domänennamens des Zertifikats mit dem Namen der Website
Eine RSA-1024-Bit-Verschlüsselung oder höher
Einschließen des privaten Schlüssels
Nach oben
Beheben von Zertifikatwarnungen
Bezieht sich auf: Bereitstellen von Windows Azure Pack für Windows Server
Problem
Zertifikatwarnungen bleiben beim Zertifikat einer vertrauenswürdigen Zertifizierungsstelle erhalten.
Empfehlung
Einige Browser verarbeiten das Feld "Zugriff auf Autoritätsinformationen", das sich während der Zertifikatüberprüfung im Zertifikat befindet. Die Problemumgehung besteht darin, die Zwischenzertifikate explizit im Zertifikatspeicher zu installieren. Eine Liste der Zertifizierungsstellen, die dieses Feld unterstützen, finden Sie unter Windows und Windows Phone 8 SSL Root Certificate Program (Member CAs).
Nach oben
Überprüfen der SSL/TLS-Einstellungen
Bezieht sich auf: Bereitstellen von Windows Azure Pack für Windows Server
Problem
Eine schwache Kommunikationssicherheit kann dazu führen, dass im Systemereignisprotokoll eine Flut von Schannel-Fehlern angezeigt wird.
Empfehlung
Um die Sicherheit von Windows Azure Pack-Kommunikationskanälen zu verbessern, sollten Sie erwägen, Ihre SSL/TLS-Einstellungen zu aktualisieren. Bevor Sie diese Änderungen implementieren, sollten Sie sicherstellen, dass sie sich nicht auf andere Anwendungen oder Dienste auswirken.
Deaktivieren von SSLv3 (weitere Informationen finden Sie unter Deaktivieren von SSL 3.0 in Azure-Websites, -Rollen und -Virtual Machines).
Akzeptieren Sie keine Schlüssel mit weniger als 128 Bit.
Akzeptieren Sie keine schwachen kryptografischen Methoden wie RC4-SHA und MD5 (weitere Informationen finden Sie unter Einschränken der Verwendung bestimmter kryptografischer Algorithmen und Protokolle in Schannel).
Sie können das folgende Skript auf jedem Computer ausführen, auf dem Windows Azure Pack ausgeführt wird, um diese Änderungen für Sie vorzunehmen:
# PowerShell script to secure TLS/SSL settings.
# Copyright (c) Microsoft Corporation. All rights reserved.
# 20-Jun-2015 Update-ComputerSchannelSettings.ps1
<#
.Synopsis
Apply HTTP.SYS settings
.NOTES
Reference: Http.sys registry settings for Windows
https://support.microsoft.com/en-us/kb/820129
#>
function Set-HttpSysSettings()
{
Write-Verbose -Message "$($Myinvocation.MyCommand.Name)" -Verbose
$regPath = "HKLM:\System\CurrentControlSet\Services\HTTP\Parameters"
# Read original values.
$maxFieldLength = (Get-ItemProperty -Path $regPath -Name MaxFieldLength -ErrorAction SilentlyContinue).MaxFieldLength
$maxRequestBytes = (Get-ItemProperty -Path $regPath -Name MaxRequestBytes -ErrorAction SilentlyContinue).MaxRequestBytes
Write-Verbose -Message "HTTP.SYS settings:`r`n MaxFieldLength = $maxFieldLength`r`n MaxRequestBytes = $maxRequestBytes" -Verbose
# Is update needed?
if ($maxFieldLength -ne 32KB -or $maxRequestBytes -ne 32KB)
{
# Write updated values.
Set-ItemProperty -Path $regPath -Name MaxFieldLength -Value 32KB
Set-ItemProperty -Path $regPath -Name MaxRequestBytes -Value 32KB
# Read updated values.
$maxFieldLength = (Get-ItemProperty -Path $regPath -Name MaxFieldLength).MaxFieldLength
$maxRequestBytes = (Get-ItemProperty -Path $regPath -Name MaxRequestBytes).MaxRequestBytes
Write-Verbose -Message "HTTP.SYS settings (updated):`r`n MaxFieldLength = $maxFieldLength`r`n MaxRequestBytes = $maxRequestBytes" -Verbose
# Changes that are made to the registry will not take effect until you restart the HTTP service.
Write-Warning -Message "HTTP.SYS settings updated; restarting the HTTP service."
Restart-Service -Name "http" -Force -Verbose
}
return $false # No reboot needed.
}
<#
.Synopsis
Apply SSL configuration settings (TLS Cipher Suite Ordering)
.NOTES
Reference: Prioritizing Schannel Cipher Suites
https://msdn.microsoft.com/en-us/library/windows/desktop/bb870930(v=vs.85).aspx
#>
function Set-SchannelCipherOrder()
{
Write-Verbose -Message "$($Myinvocation.MyCommand.Name)" -Verbose
$reboot = $false
$regPath = "HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002"
# The ordered suites names need to be specified as a single string (REG_SZ)
# with each suite separated by commas and with no embedded spaces.
# The list of cipher suites is limited to 1023 characters.
$cipherOrder = @(
'TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384'
'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256'
'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384'
'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256'
'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384'
'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256'
'TLS_RSA_WITH_AES_256_GCM_SHA384'
'TLS_RSA_WITH_AES_128_GCM_SHA256'
'TLS_RSA_WITH_AES_256_CBC_SHA256'
'TLS_RSA_WITH_AES_128_CBC_SHA256'
'TLS_RSA_WITH_AES_256_CBC_SHA'
'TLS_RSA_WITH_AES_128_CBC_SHA'
)
$cipherOrderList = ($cipherOrder -join ',')
# Read original values.
$functions = (Get-ItemProperty -Path $regPath -Name Functions -ErrorAction SilentlyContinue).Functions
Write-Verbose -Message "Schannel Cipher Order:`r`n Functions = $($functions -split ',' | ConvertTo-Json)" -Verbose
# Is update needed?
if ($functions -ne ($cipherOrder -join ','))
{
# Write updated values.
Set-ItemProperty -Path $regPath -Name Functions -Value $cipherOrderList -Force
# Read updated values.
$functions = (Get-ItemProperty -Path $regPath -Name Functions -ErrorAction SilentlyContinue).Functions
Write-Verbose -Message "Schannel Cipher Order (updated):`r`n Functions = $($functions -split ',' | ConvertTo-Json)" -Verbose
# It is necessary to restart the computer after modifying this setting for the changes to take effect.
Write-Warning -Message "Schannel Cipher Order updated; it is necessary to restart the computer."
$reboot = $true ### TODO: Restart-Computer -Force -Verbose
}
return $reboot
}
<#
.Synopsis
Apply TLS Protocol version configuration
.NOTES
Reference: How to Disable SSL 3.0 in Azure Websites, Roles, and Virtual Machines
https://azure.microsoft.com/blog/2014/10/19/how-to-disable-ssl-3-0-in-azure-websites-roles-and-virtual-machines/
#>
function Set-SchannelProtocols()
{
Write-Verbose -Message "$($Myinvocation.MyCommand.Name)" -Verbose
$reboot = $false
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols"
$protocolSettings = @(
[PSCustomObject]@{ Path = "$regPath\SSL 2.0\Client"; Name = "Enabled"; Value = 0 }
[PSCustomObject]@{ Path = "$regPath\SSL 2.0\Server"; Name = "Enabled"; Value = 0 }
[PSCustomObject]@{ Path = "$regPath\SSL 3.0\Client"; Name = "Enabled"; Value = 0 }
[PSCustomObject]@{ Path = "$regPath\SSL 3.0\Server"; Name = "Enabled"; Value = 0 }
[PSCustomObject]@{ Path = "$regPath\TLS 1.0\Client"; Name = "Enabled"; Value = 1 }
[PSCustomObject]@{ Path = "$regPath\TLS 1.0\Server"; Name = "Enabled"; Value = 1 }
[PSCustomObject]@{ Path = "$regPath\TLS 1.1\Client"; Name = "Enabled"; Value = 1 }
[PSCustomObject]@{ Path = "$regPath\TLS 1.1\Server"; Name = "Enabled"; Value = 1 }
[PSCustomObject]@{ Path = "$regPath\TLS 1.2\Client"; Name = "Enabled"; Value = 1 }
[PSCustomObject]@{ Path = "$regPath\TLS 1.2\Server"; Name = "Enabled"; Value = 1 }
)
# Read original values.
$currentProtocolSettings = @()
foreach ($protocolSetting in $protocolSettings)
{
$value = (Get-ItemProperty -Path $protocolSetting.Path -Name $protocolSetting.Name -ErrorAction SilentlyContinue).$($protocolSetting.Name)
$currentProtocolSettings += [PSCustomObject]@{ Path = $protocolSetting.Path; Name = $protocolSetting.Name; Value = $value }
}
Write-Verbose -Message "Schannel Protocol Settings: $($currentProtocolSettings | Format-Table -Autosize | Out-String)" -Verbose
$observed = $currentProtocolSettings | ConvertTo-Json -Compress
$expected = $protocolSettings | ConvertTo-Json -Compress
# Is update needed?
if ($observed -ne $expected)
{
# Create registry nodes.
$protocolPaths = @(
"$regPath\SSL 2.0"
"$regPath\SSL 2.0\Client"
"$regPath\SSL 2.0\Server"
"$regPath\SSL 3.0"
"$regPath\SSL 3.0\Client"
"$regPath\SSL 3.0\Server"
"$regPath\TLS 1.0"
"$regPath\TLS 1.0\Client"
"$regPath\TLS 1.0\Server"
"$regPath\TLS 1.1"
"$regPath\TLS 1.1\Client"
"$regPath\TLS 1.1\Server"
"$regPath\TLS 1.2"
"$regPath\TLS 1.2\Client"
"$regPath\TLS 1.2\Server"
)
foreach ($protocolPath in $protocolPaths)
{
if (-not (Get-Item -Path $protocolPath -ErrorAction SilentlyContinue))
{
New-Item -Path $protocolPath -ItemType Container -Force | Out-Null
}
}
# Write updated values.
foreach ($protocolSetting in $protocolSettings)
{
Set-ItemProperty -Path $protocolSetting.Path -Name $protocolSetting.Name -Value $protocolSetting.Value -Force
}
# Read updated values.
$currentProtocolSettings = @()
foreach ($protocolSetting in $protocolSettings)
{
$value = (Get-ItemProperty -Path $protocolSetting.Path -Name $protocolSetting.Name -ErrorAction SilentlyContinue).$($protocolSetting.Name)
$currentProtocolSettings += [PSCustomObject]@{ Path = $protocolSetting.Path; Name = $protocolSetting.Name; Value = $value }
}
Write-Verbose -Message "Schannel Protocol Settings (updated): $($currentProtocolSettings | Format-Table -Autosize | Out-String)" -Verbose
# It is necessary to restart the computer after modifying this setting for the changes to take effect.
Write-Warning -Message "Schannel Protocols updated; it is necessary to restart the computer."
$reboot = $true ### TODO: Restart-Computer -Force -Verbose
}
return $reboot
}
#-------------------------------------------------------------------------------
# Main
$reboot = $false
$reboot += Set-HttpSysSettings
$reboot += Set-SchannelCipherOrder
$reboot += Set-SchannelProtocols
if ($reboot)
{
Write-Warning -Message "Restart the computer for settings to take effect."
# TODO: Restart-Computer -Force -Verbose
}
Sie können auch SSL/TLS-Validierungstools ausführen, um andere Verbesserungsbereiche zu identifizieren.
Nach oben
Melden Sie sich über mehrere Konten beim Verwaltungsportal an
Betrifft: Windows Azure Pack für Windows Server Automation mit Windows PowerShell
Problem
Sie müssen sich über mehrere Konten beim Verwaltungsportal anmelden können.
Empfehlung
Verwenden Sie das Cmdlet Add-MgmtSvcAdminUser Windows PowerShell, um zusätzliche Prinzipale hinzuzufügen. Diese Prinzipale können explizite Benutzer oder Sicherheitsgruppen sein (wenn Ihre Token Informationen zur Sicherheitsgruppe enthalten). Im folgenden Beispiel wird ein Benutzer hinzugefügt. (Es wird davon ausgegangen, dass das Kennwort für die $pwd Variable definiert wurde.)
Add-MgmtSvcAdminUser -Server 'mysqlserver' -UserName 'sa' -Password $pwd -Principal 'user7@contoso.com'
Nach oben