【问题标题】:Create a user passing in a user object (Microsoft Graph)创建传入用户对象的用户 (Microsoft Graph)
【发布时间】:2021-02-12 12:10:44
【问题描述】:

我正在尝试通过以下链接使用 microsoft graph 调用创建用户:https://docs.microsoft.com/en-us/graph/api/user-post-users?view=graph-rest-1.0&tabs=csharp

但是,有没有办法通过在azure函数中传入User对象或用户对象的json表示形式作为参数来创建用户如下图?

[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "user/settings")] HttpRequest req, ILogger logger, User user)

另外,有没有办法读取整个 req.Body(带有附加属性)并创建一个用户,而不是只应用所需的参数(如下所示)?每个用户都有不同的属性

{
    AccountEnabled = true,
    DisplayName = "displayName-value",
    MailNickname = "mailNickname-value",
    UserPrincipalName = "upn-value@tenant-value.onmicrosoft.com",
    PasswordProfile = new PasswordProfile
    {
        ForceChangePasswordNextSignIn = true,
        Password = "password-value"
    }
};
await graphClient.Users
    .Request()
    .AddAsync(user);

【问题讨论】:

    标签: c# azure azure-active-directory microsoft-graph-api azure-ad-graph-api


    【解决方案1】:

    对于您的第一个问题,我认为我们不能将 User 对象传递给直接创建用户的函数。但是我们可以将所有属性传递给函数来创建它。正如您提到的第二个问题,如果每个用户都有不同的属性,我们创建用户并不容易。因此,我们可以将所有属性作为 json 传递给函数,然后从 req 中读取 json 并将这些属性连接为 json 字符串。之后,不要使用 graph sdk 创建用户。像下面的代码一样用graph api做一个post请求:

    string str = "{\"displayName":\"xxxx\",\"mailNickname\":\"xxxx\"}";
    
    var content = new StringContent(str, Encoding.UTF8, "application/json");
    
    HttpClient client = new HttpClient();
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "your token");
    var response = client.PostAsync("https://graph.microsoft.com/v1.0/users", content).Result;
    

    【讨论】:

    • 感谢您的回答。但是,当您创建用户时,必须填写必填字段(accountEnabled、displayName、onPremisesImmutableId、password 等)。如果我要使用用户对象并将其作为 req 中的内容传递,它将不会被创建,因为它没有指定必填字段(例如:密码 = null。需要设置密码)。在传递 json 时是否有解决方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2019-08-26
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多