2016-08-15 47 views
1

我Xamarin应用(PCL)调用Web API如下图所示的代码:集成天青AD B2C与Xamarin应用

AuthenticationResult ar = await new AuthHelper().AcquireTokenSilentAsync(); 
using (HttpClient client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri(Settings.ApiUrl); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ar.Token); 
    using (HttpResponseMessage response = await client.GetAsync("api/job")) 
    { 
     response.EnsureSuccessStatusCode(); 
     using (HttpContent content = response.Content) 
     { 
      string result = await content.ReadAsStringAsync(); 
      return result != null ? JsonConvert.DeserializeObject<ObservableCollection<JobTask>>(result) : null; 
     } 
    } 
} 

我的Web API被授权如下:

[Authorize(Roles = "Admin,BusinessAdmin")] 

我我正在使用Azure AD B2C获取令牌。我可以从Azure AD Graph获取用户角色。我不确定的是如何将从图表查询返回的角色添加到传递给Web API的AuthenticationResult.Token中。

回答

0

Azure AD B2C目前没有对应用程序角色的第一级支持,也没有对令牌中的声明提供组。

您可以在Azure AD B2C Feedback Forum

要求该功能或者,您可以通过Custom Policies自己实现。要做到这一点,您需要在用户之旅中添加一个呼叫图表的步骤,以获取其中任一个,并将它们作为声明添加到声明中。有关更多信息,请参阅this article