API-интерфейс Azure AD Graph. При добавлении пользователя в приложение возникает исключение PlatformNotSupportedException - PullRequest
0 голосов
/ 20 марта 2019

Моя цель - добавить пользователя в приложение в Azure.

Я использую старый API-интерфейс Azure AD Graph только для этого метода, поскольку более новый Microsoft Graph API в настоящее время не поддерживает эту функцию.

В процессе исключения я обнаружил, что ошибка возникает в самом начале, при попытке получить пользователя по идентификатору.

Я получаю ошибку:

System.InvalidOperationException: An error occurred while processing this request. ---> System.PlatformNotSupportedException: Secure binary serialization is not supported on this platform.

Мой код для метода;

public async Task AddUserToService(string userId)
{
    try
    {
        var user = await activeDirectoryClient.Users.GetByObjectId(userId).ExecuteAsync() as User;

        var appRoleAssignment = new AppRoleAssignment()
        {
            ResourceId = Guid.Parse(applicationId),
            PrincipalId = Guid.Parse(userId),
            Id = Guid.Parse(roleId)
        };

        user.AppRoleAssignments.Add(appRoleAssignment);
        await user.UpdateAsync();
    } catch (Exception e)
    {
        _logger.Log(Microsoft.Extensions.Logging.LogLevel.Error, "Error occurred during retrieval; " + e);
    }
}

1 Ответ

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

Я использую прямой вызов httpClient отдыха против старого графа.

Я публикую это только в качестве ссылки - обратите внимание на явную версию в URL (1.6). Я также публикую объект, в который я десериализуюсь, это может не соответствовать официальной схеме объекта.

// OLD Graph End point    //  like ... https://graph.windows.net/{tenant-id}/users/{id}/appRoleAssignments?api-version=1.6
   urlUserInviteToUse = "https://graph.windows.net/" + m_CfgHlp.TenIdInB2C + "/" + ObjFamilyName + "/" + DirObjIdToGet + "/" + ObjFunctionCall + "?api-version=1.6";

Из-за полезной нагрузки оставшейся строки API я эффективно использую JsonConvert.DeserializeObject для перехода от полезной нагрузки к классу объектов. Обратите внимание, что Даты не десериализованы как даты.

public class AppRoleAssignmentsRoot
{
    public string odatametadata { get; set; }
    public AppRoleAssignment[] value { get; set; }
}

public class AppRoleAssignment
{
    public string odatatype { get; set; }
    public string objectType { get; set; }
    public string objectId { get; set; }
    public object deletionTimestamp { get; set; }
    public object creationTimestamp { get; set; }
    public string id { get; set; }
    public string principalDisplayName { get; set; }
    public string principalId { get; set; }
    public string principalType { get; set; }
    public string resourceDisplayName { get; set; }
    public string resourceId { get; set; }
}

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

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