Я пытаюсь вызвать веб-службу (api) с помощью токена OAuth2, основанного на учетной записи управляемого пользователя AAD, вошедшей в систему на присоединенном компьютере AAD с использованием ADAL.Net, в частности, в следующем примере:
https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/wiki/AcquireTokenSilentAsync-using-Integrated-authentication-on-Windows-(Kerberos)
Однако я получаю исключение: Неизвестный тип пользователя
В моей настройке я вошел на компьютер в частной сети AAD с синхронизированной учетной записью AAD. Затем я запускаю пример кода с помощью WindowsAuthentication.
После некоторой отладки я могу сузить исключение для этого метода в ADAL.Net
protected internal /* internal for test only */ override async Task PreTokenRequestAsync()
{
await base.PreTokenRequestAsync().ConfigureAwait(false);
if (!SupportADFS)
{
var userRealmResponse = await _commonNonInteractiveHandler.QueryUserRealmDataAsync(Authenticator.UserRealmUriPrefix)
.ConfigureAwait(false);
if (string.Equals(userRealmResponse.AccountType, "federated", StringComparison.OrdinalIgnoreCase))
{
WsTrustResponse wsTrustResponse = await _commonNonInteractiveHandler.PerformWsTrustMexExchangeAsync(
userRealmResponse.FederationMetadataUrl,
userRealmResponse.CloudAudienceUrn,
UserAuthType.IntegratedAuth).ConfigureAwait(false);
// We assume that if the response token type is not SAML 1.1, it is SAML 2
_userAssertion = new UserAssertion(wsTrustResponse.Token, (wsTrustResponse.TokenType == WsTrustResponse.Saml1Assertion) ? OAuthGrantType.Saml11Bearer : OAuthGrantType.Saml20Bearer);
}
else
{
throw new AdalException(AdalError.UnknownUserType);
}
}
}
Поскольку все в моей настройке управляется с помощью AAD, я не понимаю, почему тип учетной записи пользователя должен быть «объединен» для получения токена.
Так что я подозреваю, что мне нужно получить свой токен другим способом !?
Любая помощь будет оценена;)