OperationID для обратного вызова из Azure AD B2C с целью ведения журнала - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь убедиться, что мой журнал выглядит правильно, но у меня есть некоторые проблемы со службой пула, которые необходимы для получения токена доступа от Azure Ad B2C.

Проблема в функции обратного вызова, которую AD использует для повторного доступа к моей системе. Все вызовы, сделанные из обратного вызова, не регистрируются правильно, так как идентификатор операции неверен. Есть ли способ передать OperationId в мир AD?

async Task<string> GetAccessToken()
{
    var uri = $"https://login.microsoftonline.com/.........";

    var parameters = new FormUrlEncodedContent(
        new Dictionary<string, string>()
        {
            {"username", B2CConfiguration.Username},
            {"password", B2CConfiguration.Password},
            {"grant_type", B2CConfiguration.GrantType},
            {"scope", B2CConfiguration.Scope},
            {"client_id", B2CConfiguration.ClientId},
            {"response_type", B2CConfiguration.ResponseType}
        });

    using (var request = await _httpClient.PostAsync(uri, parameters))
    {
        var response = await request.Content.ReadAsStringAsync();
        var token = JsonConvert.DeserializeObject<AccessTokenModel>(response).access_token;
        return $"Bearer {token}";
    }
}

async Task DoWorkAsync()
{
    var operationID = Guid.NewGuid().ToString();
    using (_logClient.CreateRequest("Actor Run",operationID ))  // _logClient is a thin wrapper for the applicationInsights client
    {
        var accessToken = await GetAccessToken();       // This call is not listed under "Actor Run" in Application Insights
        var dataSet = await GetSomeData(accessToken);   // This call is logged correctly
        foreach(var data in dataSet)
        {
            await UseDateToDoSomethingOnExternalServer(dataSet, data);  // This call is logged correctly
        } 
    }
}

1 Ответ

0 голосов
/ 10 апреля 2019

По вашему вопросу служба пула вызывает проблему, когда требуется получить токен доступа.На самом деле я не видел, как мы могли бы передать идентификатор операции или какой-либо конкретный идентификатор в объявление Azure.На данный момент вы можете использовать библиотеку MSAL для получения токена доступа из Azure AD B2C с помощью метода AcquireTokenByUsernamePasswordAsync () и зарегистрировать его под своим идентификатором пользовательской операции.

Для получения дополнительной информации о получениитокен с именем пользователя / паролем, пожалуйста, проверьте ссылку на документацию ниже:

https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Username-Password-Authentication

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...