• Bewerte uns auf OMR Reviews: Klick

  • Achtet bitte in den Beiträgen darauf, dass ihr keine Informationen teilt, die der DSGVO unterliegen können. Verpixelt bitte die entsprechenden Stellen in Screenshots, postet hier auf keinen Fall Messagatracks ohne Rücksprache und auch in den Log Files können persönliche oder sensible Daten enthalten sein.

    Macht uns auch bitte per PN darauf aufmerksam wenn ihr etwas seht. Schreibt mich (@sören) einfach direkt an. 

  • Zertifikate vom Deutschen Forschungsnetz beziehen (Harica CA)? Klick

OpenID funktioniert nicht

869288141

Well-known member
Registriert
29 Oktober 2022
Beiträge
458
Reaktionspunkte
93
Hallo NSP Team,
ich beschäftige ich morgen mit der Realisierung der Anbindung eines IdP mit OpenID. Doku habe ich bereits gefunden und gelesen (Link).

Dort gibt es folgende Zeile:
Code:
New-NspUserRoleAssignment -TenantId 0 -Identity „john.doe@example.com“ -Role ConfigurationAdministrator
Woher bekomme ich den Wert für den Parameter TenantId bei einer On-Premise Installation von NSP?

Nachdem OpenID aktiviert ist, wird die Windows-Authentifizierung für NoSpamProxy deaktiviert. Von diesem Zeitpunkt an können sich Benutzer nur noch mit einem gültigen OpenID-Konto authentifizieren
Gibt es eine Möglichkeit eines Fallbacks? Falls es mit OpenID bei der Einrichtung bzw. auch später in Betrieb mal Probleme gibt. Sprich, dass man gerade bei der Analyse des Fehlerzustands die Möglichkeit hat, OpenID zu deaktivieren (nicht zu löschen), so dass die Windows Authentifizierung wieder aktiv ist.

Gruß,
Daniel

P.S. Habt ihr ein Quick & Dirty Anleitung für Microsoft AD FS rumliegen? Sören hat in seinem Video (Link) leider den neumodischen Quatsch beschrieben. 😇
 
Zuletzt bearbeitet:
Dort gibt es folgende Zeile:
New-NspUserRoleAssignment -TenantId 0 -Identity „john.doe@example.com“ -Role ConfigurationAdministratorWoher bekomme ich den Wert für den Parameter TenantId bei einer On-Premise Installation von NSP?
Hi,

diese Rückfrage kann ich schonmal beantworten. Die Tenant-ID kann in einer Mandanten Umgebung (Mandantenmodus) mit Get-NSPTenant ausgelesen werden. In einer Mandantenumgebung ist die TenantID 0 alle Tenants.

Ich würde davon ausgehen, dass die 0 bei einer Umgebung ohne Mandantenmodus die immer die korrekte Tenant-ID ist.

Die Frage mit dem Deaktivieren des OpenID würde mich auch interessieren.
 
Ich würde davon ausgehen, dass die 0 bei einer Umgebung ohne Mandantenmodus die immer die korrekte Tenant-ID ist.
Gut geraten. ;) Nachstehen die Ausgabe bei meiner Test Instanz.
Code:
PS C:\Windows\system32> Get-NSPTenant

Id                           : 0
UniqueId                     : a6c7d422-7d2c-4594-85b7-237ededdd6a4
Name                         : Default
PrimaryDomain                : _global
PrimaryContact               :
ProtectionUsers              : 1
EncryptionUsers              : 1
DisclaimerUsers              : 1
LargeFilesUsers              : 1
SandboxFiles                 : 1
ManagedCertificates          : 0
IsEnabled                    : True
EdiAtEnergyCorporateAccounts : 0
IsHsmAccessAvailable         : False
Context                      : NoSpamProxy.Odata.Configuration.MessageTracking
EntityDescriptor             :
 
Guten Morgen,

@Mueller nah dran. Im MSP ist Tenant 0 der globale Tenant in welchem noch System Einstellungen stattfinden / globale Default Einstellungen statt finden, es ist aber nicht als "alle Tenants" zu betrachte :)
In einer normalen Umgebung ist es immer Tenant 0. Dieser wird bei der Installation standardmäßig erstellt.
Ein Fallback ist derzeit nicht möglich, das ist leider der Technologie geschuldet, sobald wir NTLM los sind wird das aber machbar werden :)

Der Weg zurück ist aber "ganz einfach": in der SQL DB die OpenID Configuration aus seiner Tabelle löschen ^^
CmdLet geht natürlich nicht sonderlich gut wenn man sich nicht mehr authentifizieren kann.

Zu MS ADFS habe ich leider nichts rum liegen, du müsstest es aber so einrichten, dass es eakt den OpenID Standard abbildet, ansonsten wird es nicht klappen.


Gruß
Jan
 
Guten Morgen Jan,
Ein Fallback ist derzeit nicht möglich, das ist leider der Technologie geschuldet, sobald wir NTLM los sind wird das aber machbar werden :)
Hm. Mir fehlt hierzu gerade die Abhängigkeit zwischen OpenID und Windows-Authentifizierung bzw. NTLM. Was hat NTLM mit OpenID zu tun?

Der Weg zurück ist aber "ganz einfach": in der SQL DB die OpenID Configuration aus seiner Tabelle löschen ^^
Hm. D.h. sämtliche Rollen Zuweisungen mit New-NspUserRoleAssignment sind damit auch weg. Genau deshalb die Frage nach dem deaktivieren. Abgesehen davon, möchtest du die SQL-Befehle gleich kundtun?
Zu MS ADFS habe ich leider nichts rum liegen, du müsstest es aber so einrichten, dass es eakt den OpenID Standard abbildet, ansonsten wird es nicht klappen.
Äh, ja. Ich gebe mein Bestens... bin mir grad nicht sicher, wer von uns beiden schon länger mit der Microsoft Traumwelt arbeitet.;)


Gruß,
Daniel
 
Hallo Jan,
ich habe einen ersten Test mit AD FS durchgeführt. Ich sehe den Anmelde Dialog am NSP CC.
1755081559211.png
Anschließend erscheint die Anmeldemaske von AD FS.
1755082000336.png
Danach erhalte ich folgende Fehlermeldung:
1755081630084.png

Was habe ich getan. Zuerst den OpenId Provider in NSP angelegt:
Code:
PS> Connect-Nsp
PS> $clientsec = Read-Host -AsSecureString
****************************************
PS> New-NspOpenIdProvider -Name 'MicrosoftADFS' -DisplayName 'Login LAB03' -ClientId "37dc245c-aaaa-bbbb-cccc-7b3598775c24" -ClientSecret $clientsec -DiscoveryEndpoint 'https://login.lab03.sub.domain.de/adfs/.well-known/openid-configuration'

Enable OpenID authentication
You are about to create the first OpenID provider. If you proceed, authentication via Windows accounts will no longer
be possible. From this point on, you will only be able to use OpenID authentication. Do you want to continue?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y


ClientId                                        : 37dc245c-aaaa-bbbb-cccc-7b3598775c24
ClientSecret                                    :
Name                                            : MicrosoftADFS
DisplayName                                     : Login LAB03
DiscoveryEndpoint                               : https://login.lab03.sub.domain.de/adfs/.well-known/openid-configur
                                                  ation
AuthorizationEndpoint                           : https://login.lab03.sub.domain.de/adfs/oauth2/authorize/
TokenEndpoint                                   : https://login.lab03.sub.domain.de/adfs/oauth2/token/
JwksEndpoint                                    : https://login.lab03.sub.domain.de/adfs/discovery/keys
SubClaimType                                    : preferred_username
NameClaimType                                   : name
IssuerPattern                                   : ^https://login\.lab03\.sub\.domain\.de/adfs$
IssuerPatternOverride                           :
AdditionalAuthorizationEndpointSearchParameters :
Icon                                            :
Tenan

Die Daten habe ich vom AD FS über https://login.lab03.sub.domain.de/adfs/.well-known/openid-configuration ausgelesen/verglichen:
Code:
issuer                                           : https://login.lab03.sub.domain.de/adfs
authorization_endpoint                           : https://login.lab03.sub.domain.de/adfs/oauth2/authorize/
token_endpoint                                   : https://login.lab03.sub.domain.de/adfs/oauth2/token/
jwks_uri                                         : https://login.lab03.sub.domain.de/adfs/discovery/keys
token_endpoint_auth_methods_supported            : {client_secret_post, client_secret_basic, private_key_jwt,
                                                   windows_client_authentication}
response_types_supported                         : {code, id_token, code id_token, id_token token...}
response_modes_supported                         : {query, fragment, form_post}
grant_types_supported                            : {authorization_code, refresh_token, client_credentials,
                                                   urn:ietf:params:oauth:grant-type:jwt-bearer...}
subject_types_supported                          : {pairwise}
scopes_supported                                 : {user_impersonation, allatclaims, profile, aza...}
id_token_signing_alg_values_supported            : {RS256}
token_endpoint_auth_signing_alg_values_supported : {RS256}
access_token_issuer                              : http://login.lab03.sub.domain.de/adfs/services/trust
claims_supported                                 : {aud, iss, iat, exp...}
microsoft_multi_refresh_token                    : True
userinfo_endpoint                                : https://login.lab03.sub.domain.de/adfs/userinfo
capabilities                                     : {kdf_ver2}
end_session_endpoint                             : https://login.lab03.sub.domain.de/adfs/oauth2/logout
as_access_token_token_binding_supported          : True
as_refresh_token_token_binding_supported         : True
resource_access_token_token_binding_supported    : True
op_id_token_token_binding_supported              : True
rp_id_token_token_binding_supported              : True
frontchannel_logout_supported                    : True
frontchannel_logout_session_supported            : True
device_authorization_endpoint                    : https://login.lab03.sub.domain.de/adfs/oauth2/devicecode

Natürlich habe ich vorher bzw. nachher folgende cmdlets ausgeführt:
Code:
New-NspUserRoleAssignment -Identity NameDesBenutzers -Role GlobalAdministrator
New-NspUserRoleAssignment -TenantId 0 -Identity „john.doe@example.com“ -Role ConfigurationAdministrator

Auf Grund der Fehlermeldung nach der Anmeldung an der NSP CC möchte ich behaupten, es liegt nicht an meiner Konfiguration. Einzig, dass der Benutzername keine valide E-Mail-Adresse bzw. UPN ist, welcher mit einer TLD endet, könnte das vermeidliche Problem sein.

Wie können wir nun den Fehler eingrenzen?


Gruß,
Daniel
 
Einzig, dass der Benutzername keine valide E-Mail-Adresse bzw. UPN ist, welcher mit einer TLD endet, könnte das vermeidliche Problem sein.
Ich habe folgende Kombinationen des Benutzernamens bei der Anmeldung durchgespielt:
  1. admin.daniel@lab03.sub.domain.de (UPN)
  2. LAB03\admin.daniel (Netbios Name der Domäne\sAMAccountName
  3. admin.daniel (sAMAccountName)
  4. admin.daniel@LAB03 (sAMAccountName@Netbios Name der Domäne)
Die Fehlermeldung bleibt in allen Fällen die Selbe.
 
Ich schaue morgen mal ob ich was entdecke.
Der Meldung nach liegt es am Provider, das kann deine Konfig sein, das kann aber auch die Antwort von der Autorisierung sein.

Ggf. Haben wir hier eine passende log Kategorie bzw. loggen in die DevTools vom Web view, das kann ich aber erst morgen prüfen ;)
 
Guten Morgen Jan,
DevTools vom Web view
für die Doku und die Nachwelt. Die Dev Tools können wie beim Browser mit F12 aufgerufen werden.

Ich habe einmal das Problem 1:1 reproduziert. Im Reiter "Console" sehe ich folgenden Fehler:
1755202560470.png
Im Reiter "Network" sehe ich folgende Einträge:
1755202622716.png
Der HTTP Status Code 400, Bad Request sieht wie folgt aus:
1755202762853.png

1755202817378.png
Filtert ihr evtl. auf den Parameter "provider"? Abgesehen davon macht mich die URI "Temporary_Listen_Addresses" stutzig. Ist der Pfad gewollt?
Der Port 80 ist auf jeden Fall auf dem Server, auf dem die NSP Intranet Rolle installiert ist, verfügbar.
Code:
C:\Users\admin.daniel>netstat -na | find ":80"
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING
  TCP    [::]:80                [::]:0                 LISTENING

Code:
Test-NetConnection -ComputerName localhost -Port 80


ComputerName     : localhost
RemoteAddress    : ::1
RemotePort       : 80
InterfaceAlias   : Loopback Pseudo-Interface 1
SourceAddress    : ::1
TcpTestSucceeded : True

1755202880193.png

Gerne stelle ich die HAR Datei bei Bedarf vollständig zur Verfügung. Auch meine Test-Umgebung kann jederzeit in Anspruch genommen werden. Weil ein ADFS hat nicht jeder im Lab gerade funktionstüchtig rumstehen. ;)


Gruß,
Daniel

P.S. Bei Gelegenheit der WebApp ein Favicon verpassen.
P.S.S. Die Schritte in eurer Doku und die Schritte im Video stimmen zweimal nicht überein. Im Video sagt Sören, dass die PowerShell geschlossen und neu gestartet werden muss. In der Doku ist das für mich nicht ersichtlich. Im Video gibt Sören beim cmdlet New-NspUserRoleAssignment immer die Tenant ID bei allen PowerShell Befehlen an. In der Doku ist es gemischt.
 
Zuletzt bearbeitet:
Hey,

kannst du mal schauen wie das Verhalten ist wenn du in den WebApps den SignOut Endpunkt entfernst?
Dafür musst due eine JSON Konfig bearbeiten, bzw. jede pro WebApp, aber Monitoring sollte erstmal reichen:
"C:\Program Files\NoSpamProxy\WebApp Hosting Service\Content\Monitoring\config\systemConfigurations.json"

Dort gibt es einen Eintrag '"signOut": "/signout",', schmeiß den mal raus und starte den Hosting Service neu.
 
Dafür musst due eine JSON Konfig bearbeiten, bzw. jede pro WebApp, aber Monitoring sollte erstmal reichen:
Versteh ich zwar noch nicht, aber du wirst mir das sicherlich noch erklären. ;)

Dort gibt es einen Eintrag '"signOut": "/signout",', schmeiß den mal raus
Done.
Code:
{"serviceEndPoints":{"baseUrl":"/","odataPath":"odata/v4/","baseIdentityUrl":"/api/identity-service","baseMessageTrackingEndpoint":"api/message-tracking/","userInfo":"/whoami","renewToken":"/renew-token","thumbnailPhoto":"/user-image","switchTenant":"/switch-tenant","challenge":"/account/login?forceNewCredential=true&returnUrl=/api/identity-service/whoami","tenants":"/tenants"},"globalCacheDurationMs":5000,"httpTimeoutMs":28800000,"loginPortalUrl":"/login/","cloudStatusUrl":"","features":[]}

Nach der Anpassung hat es bei euch funktioniert?

schmeiß den mal raus und starte den Hosting Service neu.
Den Service gibt es bei mir nicht. Folgende Windows Dienste existieren:
1755257915950.png
Du meinst sicher NoSpamProxy - Intranet Role WebApp?!4
Hab den Server mit der NSP Intranetrolle nun einfach neu gestartet. Anschließend nochmals die Anmeldung am NSP CC versucht. Die Fehlermeldung (Unsupported identity provider) bleibt die Selbe. Auch der HTTP Status Code in den Dev Tools ist der Selbe.
 
Zuletzt bearbeitet:
Ich habe mein Glück mit einem weiteren IdP heute versucht. Es Handelt sich dabei um Synology SSO. Auch dort erhalte ich die selben Fehlermeldung nach der Eingabe meiner Zugangsdaten wie bei AD FS.
1755278330779.png

1755278414308.png
1755278442009.png

1755278499318.png

1755278522197.png

1755278607166.png

Die Funktion bezüglich des Discvoery der verschiedenen Endpunkten hat leider nicht funktioniert. Daher habe ich diese über die Well-kown URL von Synology SSO: https://login.nas01.lab03.sub.domain.de/webman/sso/.well-known/openid-configuration ausgelesen.

Nachstehend noch meine OpenID Konfiguration in NSP.
Code:
PS> New-NspOpenIdProvider -ClientId "897bd30c7d4b925f52937f2e3fe33d60" -ClientSecret $clientsec -Name "SynologySSO" -DisplayName "Login NAS01" -AuthorizationEndpoint "https://login.nas01.lab03.sub.domain.de/webman/sso/SSOOauth.cgi" -TokenEndpoint "https://login.nas01.lab03.sub.domain.de/webman/sso/SSOAccessToken.cgi" -JwksEndpoint "https://login.nas01.lab03.sub.domain.de/webman/sso/openid-jwks.json"

Enable OpenID authentication
You are about to create the first OpenID provider. If you proceed, authentication via Windows accounts will no longer
be possible. From this point on, you will only be able to use OpenID authentication. Do you want to continue?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):


ClientId                                        : 897bd30c7d4b925f52937f2e3fe33d60
ClientSecret                                    :
Name                                            : SynologySSO
DisplayName                                     : Login NAS01
DiscoveryEndpoint                               :
AuthorizationEndpoint                           : https://login.nas01.lab03.sub.domain.de/webman/sso/SSOOauth.cgi
TokenEndpoint                                   : https://login.nas01.lab03.sub.domain.de/webman/sso/SSOAccessToken.
                                                  cgi
JwksEndpoint                                    : https://login.nas01.lab03.sub.domain.de/webman/sso/openid-jwks.jso
                                                  n
SubClaimType                                    : preferred_username
NameClaimType                                   : name
IssuerPattern                                   : .+
IssuerPatternOverride                           : .+
AdditionalAuthorizationEndpointSearchParameters :
Icon                                            :
TenantId                                        : 0
Id                                              : 1

Nachstehend die Ausgabe von "webman/sso/.well-known/openid-configuration":
Code:
authorization_endpoint                : https://login.nas01.lab03.sub.domain.de/webman/sso/SSOOauth.cgi
claims_supported                      : {aud, email, exp, groups...}
code_challenge_methods_supported      : {S256, plain}
grant_types_supported                 : {authorization_code, implicit}
id_token_signing_alg_values_supported : {RS256}
issuer                                : https://login.nas01.lab03.sub.domain.de/webman/sso
jwks_uri                              : https://login.nas01.lab03.sub.domain.de/webman/sso/openid-jwks.json
response_types_supported              : {code, code id_token, id_token, id_token token}
scopes_supported                      : {email, groups, openid}
subject_types_supported               : {public}
token_endpoint                        : https://login.nas01.lab03.sub.domain.de/webman/sso/SSOAccessToken.cgi
token_endpoint_auth_methods_supported : {client_secret_basic, client_secret_post}
userinfo_endpoint                     : https://login.nas01.lab03.sub.domain.de/webman/sso/SSOUserInfo.cgi


By the way: Mit welchen IdPs habt Ihr eure Integration getestet?

Gruß,
Daniel
 
Zuletzt bearbeitet:
Zurück
Oben