Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Bei der Verarbeitung von Ausnahmen können Sie den Ausnahmetyp selbst und das ErrorCode-Element verwenden, um zwischen Ausnahmen zu unterscheiden. Es gibt drei Arten von Ausnahmen: MsalClientException, MsalServiceException und MsalInteractionRequiredException, die alle von MsalException erben.
- MsalClientException wird ausgelöst, wenn ein Fehler auftritt, der lokal für die Bibliothek oder das Gerät ist.
- MsalServiceException wird ausgelöst, wenn der STS-Dienst eine Fehlerantwort zurückgibt oder ein anderer Netzwerkfehler auftritt.
- MsalInteractionRequiredException wird ausgelöst, wenn ui-Interaktion erforderlich ist, damit die Authentifizierung erfolgreich ausgeführt werden kann.
MsalServiceException
MsalServiceException macht HTTP-Header verfügbar, die die Anforderungen an den STS zurückgegeben haben. Sie können darauf zugreifen, indem Sie MsalServiceException.headers()
MsalInteractionRequiredException
Einer der allgemeinen Statuscodes, die beim Aufrufen AcquireTokenSilently() von MSAL4J zurückgegeben werden, ist InvalidGrantError. Dieser Statuscode bedeutet, dass die Anwendung die Authentifizierungsbibliothek erneut aufrufen soll, aber im interaktiven Modus (Verwenden von AuthorizationCodeParameters oder DeviceCodeParameters für öffentliche Clientanwendungen). Dies liegt daran, dass zusätzliche Benutzerinteraktionen erforderlich sind, bevor ein Authentifizierungstoken ausgegeben werden kann.
Die meiste Zeit, wenn AcquireTokenSilently fehlschlägt, liegt daran, dass der Tokencache keine Token enthält, die Ihrer Anforderung entsprechen. Zugriffstoken laufen nach 1 Stunde ab, und AcquireTokenSilently versucht, anhand eines Aktualisierungstokens ein neues Zugriffstoken abzurufen (in der OAuth2-Terminologie ist dies der „Refresh Token“-Ablauf). Dieser Ablauf kann auch aus verschiedenen Gründen fehlschlagen, z. B. wenn ein Mandantenadministrator strengere Anmelderichtlinien konfiguriert.
Die Interaktion zielt darauf ab, dass der Benutzer eine Aktion ausführen kann. Einige dieser Bedingungen sind für Benutzer leicht zu beheben (z. B. akzeptieren Sie die Nutzungsbedingungen mit einem einzigen Klick), und einige können nicht mit der aktuellen Konfiguration aufgelöst werden (z. B. muss der betreffende Computer eine Verbindung mit einem bestimmten Unternehmensnetzwerk herstellen).
MSAL macht ein reason Feld verfügbar, das Sie lesen können, um eine bessere Benutzererfahrung bereitzustellen, z. B. um dem Benutzer mitzuteilen, dass sein Kennwort abgelaufen ist oder dass er die Zustimmung zur Verwendung einiger Ressourcen erteilen muss. Die unterstützten Werte sind Teil der InteractionRequiredExceptionReason-Enumeration:
| Grund | Bedeutung | Empfohlene Behandlung |
|---|---|---|
| BasicAction | Die Bedingung kann durch Benutzerinteraktion während des interaktiven Authentifizierungsflusses aufgelöst werden. | acquireToken mit interaktiven Parametern aufrufen |
| Zusätzliche Aktion | Die Bedingung kann durch zusätzliche Wartungsinteraktion mit dem System behoben werden, außerhalb des interaktiven Authentifizierungsflusses. | Rufen Sie "AcquireToken" mit interaktiven Parametern auf, um eine Meldung anzuzeigen, die die Korrekturaktion erläutert. Die aufrufende Anwendung kann Abläufe ausblenden, die additional_action erfordern, wenn der Benutzer die Korrekturmaßnahme voraussichtlich nicht abschließen wird. |
| MessageOnly | Die Bedingung kann zurzeit nicht aufgelöst werden. Beim Starten des interaktiven Authentifizierungsflusses wird eine Meldung angezeigt, in der die Bedingung erläutert wird. | Rufen Sie acquireToken mit interaktiven Parametern auf, um eine Meldung anzuzeigen, die die Bedingung erläutert. acquireTokenCall gibt den UserCanceled-Fehler zurück, nachdem der Benutzer die Nachricht gelesen und das Fenster geschlossen hat. Beim Aufrufen der Anwendung können Flows ausgeblendet werden, die zu „message_only“ führen, wenn der Benutzer von der Nachricht wahrscheinlich keinen Nutzen hat. |
| Zustimmung erforderlich | Die Zustimmung des Benutzers fehlt oder wurde widerrufen. | Rufen Sie alle acquireToken mit interaktiven Parametern auf, damit der Benutzer seine Zustimmung erteilen kann. |
| Benutzerkennwort abgelaufen | Das Kennwort des Benutzers ist abgelaufen. | Rufen Sie acquireToken mit dem interaktiven Parameter auf, damit der Benutzer das Kennwort zurücksetzen kann. |
| Zustimmung erforderlich | Die Zustimmung des Benutzers fehlt oder wurde widerrufen. | Rufen Sie acquireToken mit interaktiven Parametern auf, damit der Benutzer das Kennwort zurücksetzen kann. |
| Nichts | Es werden keine weiteren Details angegeben. Die Bedingung kann durch Benutzerinteraktion während des interaktiven Authentifizierungsflusses behoben werden. | Rufen Sie acquireToken mit interaktiven Parametern auf. |
Codebeispiel
IAuthenticationResult result;
try {
PublicClientApplication application = PublicClientApplication
.builder("clientId")
.b2cAuthority("authority")
.build();
SilentParameters parameters = SilentParameters
.builder(Collections.singleton("scope"))
.build();
result = application.acquireTokenSilently(parameters).join();
}
catch (Exception ex){
if(ex instanceof MsalInteractionRequiredException){
// AcquireToken by either AuthorizationCodeParameters or DeviceCodeParameters
} else{
// Log and handle exception accordingly
}
}