Mit ADAL habe ich zwei AuthenticationContext
, die einen in SQL persistenten Token Cache verwenden.AcquireTokenSilent konnte das Token im Hintergrund nicht abrufen
Mit AcquireTokenByAuthorizationCode
den Token in der Datenbank schreibt, aber wenn AcquireTokenSilent
mit erhalte ich immer
Fehlgeschlagen Token still zu erwerben. Call-Methode AcquireToken
Hier sind die Details für die Replikation der Ausgabe:
ich einen Kontext schaffen
AuthenticationContext authContext = new AuthenticationContext(_authority, new AzureAdalCache(companyId, _entries, _unitOfWork));
Dann habe ich von Authorization AcquireToken
authContext.AcquireTokenByAuthorizationCode(authorizationCode, new Uri(redirectUri), _clientCredential);
An dieser Stelle ist es speichert einen Eintrag in der Datenbank
Dann, wenn ich das anrufe, bekomme ich eine Ausnahme.
authContext.AcquireTokenSilent(_authority, _clientCredential, new UserIdentifier(companyId.ToString(), UserIdentifierType.UniqueId)).AccessToken;
ich auch mit dem gleichen Ergebnis versucht:
authContext.AcquireTokenSilent(_authority, _clientId).AccessToken;
authContext.AcquireTokenSilent(_authority, _clientCredential, UserIdentifier.AnyUser).AccessToken;
ich in this Gist meine AzureAdalCache
Umsetzung veröffentlichen.
Jeder Eintrag des Caches ist like this.
Was fehlt mir?
aktualisieren
Basierend auf Antwort Kommentare von @vibronet Ich habe diese
AuthenticationContext authContext = new AuthenticationContext(_authority, new AzureAdalCache(companyId, _entries, _unitOfWork));
authContext.AcquireTokenByAuthorizationCode(authorizationCode, new Uri(redirectUri), _clientCredential, _eWSResource);
string result = authContext.AcquireTokenSilent(_eWSResource, _clientId, UserIdentifier.AnyUser).AccessToken;
Beachten Sie außerdem, dass die GUID, die die TenantId und die UniqueId des Benutzers in einigen Versionen von ADAL ist, Fall sind empfindlich, weil sie Kleinbuchstaben sein müssen, damit der Cache sie korrekt lädt. – Andacious
jeder Beispielcode würde helfen. weil AcquireTokenByAuthorizationCodeAsync unterschiedliche Parameter haben wird. – Kurkula