2

Azure AD B2C が大好きです... プレビューが終了するのを楽しみにしています!!!

頭を整理するのに助けが必要な特別なケースがあります。

Web フォームを介して新しい電子メール アドレスを取得するページがあります。

その電子メールをメーリング リストに追加した後、ユーザーが ASP.NET MVC サイトを使用して追加のボタンをクリックすることなく、AD B2C アカウントを自動的に作成したいと考えています。

https://azure.microsoft.com/en-us/documentation/articles/active-directory-b2c-devquickstarts-graph-dotnet/の記事を読んで

Graph API を使用して新しいユーザーを追加できることがわかりました。ただし、この例は cmd プログラムを使用して記述されています。

MVCコントローラー内のAD B2Cにユーザーを挿入できるようにするサンプルコードがあるかどうかは誰にもわかりませんか?

4

1 に答える 1

3

ASP.Net MVC から実行する方法のサンプル コードを次に示します。あなたが言及した記事で説明されているように、ClientId と Clientsecret (ASP.Net webapp とは別のもの) を含める必要があることを思い出してください。コントローラーからのコード -- ヘルパークラス:

ユーザーコントローラー:

  // POST: User/Create
    [HttpPost]
    public async Task<ActionResult> Create(b2cuser usr)
    {
        try
        {
            usr.AlternativeSignInNamesInfo.First().Value = string.Format("{0}_{1}", usr.FirstName, usr.LastName);
            usr.DisplayName = string.Format("{0} {1}", usr.FirstName, usr.LastName);

            string json = Newtonsoft.Json.JsonConvert.SerializeObject(usr, Formatting.None);
            Utils.GraphAPIHelper api = new Utils.GraphAPIHelper(graphAPIClientId, graphAPIClientSecret, tenant);
            string res = await api.GraphPostRequest("/users/", json);
            return RedirectToAction("Index");
        }
        catch (Exception e)
        {
            return View();
        }
    }

そして、GraphAPIHelper で:

    internal async Task<string> GraphPostRequest(string api, string json)
    {
        AuthenticationResult result = authContext.AcquireToken(graphResourceID, credential);
        HttpClient http = new HttpClient();
        string url = aadGraphEndpoint + tenant + api + "?" + aadGraphVersion;

        HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", result.AccessToken);
        request.Content = new StringContent(json, Encoding.UTF8, "application/json");
        HttpResponseMessage response = await http.SendAsync(request);

        if (!response.IsSuccessStatusCode)
        {
            string error = await response.Content.ReadAsStringAsync();
            object formatted = JsonConvert.DeserializeObject(error);
            throw new WebException("Error Calling the Graph API: \n" + JsonConvert.SerializeObject(formatted, Formatting.Indented));
        }

        return await response.Content.ReadAsStringAsync();
    }

そして最後に、モデルからのいくつかのサンプルコード、pls は JsonProperty(Order:

public class b2cuser
{
    [JsonProperty(Order = 0, PropertyName = "accountEnabled")]
    public bool AccountEnabled = true;

    [JsonProperty(Order = 1, PropertyName = "alternativeSignInNamesInfo")]
    public List<AlternativeSignInNamesInfo> AlternativeSignInNamesInfo { get; set; }

    [JsonProperty(Order = 2, PropertyName = "creationType")]
    public string CreationType = "NameCoexistence";
于 2016-03-02T09:59:37.460 に答える