Wir haben Probleme, die Aktualisierungstokens zu funktionieren. Anfangs meldet sich der Benutzer mit der Webansicht von ADAL an und erhält ein Token. Mit diesem Token wird die Web-API aufgerufen, bis sie abläuft. Anstatt wie erwartet ein neues Token ohne die Web-Eingabeaufforderung zu erhalten, wird ein Fehler auf dem Server protokolliert und dem Benutzer wird erneut die Anmelde-Web-Eingabeaufforderung angezeigt.Aktualisieren Sie Token mit ADFS 3.0, ADAL, Web API und Xamarin
Von dem, was wir gelesen haben, sollten Sie AcquireTokenAsync bei jedem Aufruf verwenden und ADAL die Token/Refresh-Token behandeln lassen.
Hier ist der Fehler, den wir auf dem Server bekommen, wenn ADAL versucht, ein neues Token mit dem Refresh-Token zu erhalten. Wir haben versucht, nach diesem Fehler zu suchen, finden aber nicht viel.
Fehler bei OAuth-Tokenanforderung.
Weitere Daten
Ausnahmedetails: Microsoft.IdentityServer.Web.Protocols.OAuth.Exceptions.OAuthInvalidScopeException: MSIS9330: Die OAuth-Zugriffstoken Anforderung empfangen ist ungültig. Ein "Scope" -Parameter wurde in der Anfrage empfangen und AD FS unterstützt keinen Bereich mit . Erhaltener Umfang: 'openid'. bei Microsoft.IdentityServer.Web.Protocols.OAuth.OAuthToken.OAuthRefreshTokenRequestContext.Validate()
Fehlt etwas? Gibt es eine Möglichkeit, den Bereich festzulegen, oder funktioniert das nicht mit den aktuellen Versionen, die wir verwenden? ADAL ist derjenige, der den Beitrag mit dem Bereich zum ADFS-Server macht.
Wir verwenden Azure AD NICHT!
Der Anruf aus dem View-Controller in der iOS-App:
PlatformParameters p = new PlatformParameters(this);
AuthenticationContext authContext = new AuthenticationContext("https://adfs.domain.com/adfs", false);
AuthenticationResult _authResult = await authContext.AcquireTokenAsync("https://webapi.domain.com", "E1CF1107-FF90-4228-93BF-26052DD2C714", “http://anarbitraryreturnuri/”, p);
Startup.Auth.cs in Web API:
public void ConfigureAuth(IAppBuilder app)
{
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"],
TokenValidationParameters = new TokenValidationParameters()
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"],
},
}
}
Hier sind die Stücke, die wir haben:
- Windows Server 2012 R2 mit ADFS 3.0 (lokal)
- SsoLifetime = 60
- TokenLifetime (vertrauende) = 10
- ADAL 3.13.8
- .NET Web API
- Xamarin iOS App
Hier sind einige der Pfosten wir verwendet, um dieses zu erhalten Arbeit: