1

我的 Xamarin 应用程序 (PCL) 调用 Web API,如下面的代码所示:

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 获取用户角色。我不确定的是如何将从 Graph 查询返回的角色添加到AuthenticationResult.Token传递给 Web API 的角色中。

4

1 回答 1

0

Azure AD B2C 目前没有对应用程序角色或组作为令牌中的声明的一流支持

您可以在Azure AD B2C 反馈论坛中请求此功能

或者,您可以通过自定义策略自己实施。为此,您将在用户旅程中添加一个步骤,调用图表以获取其中任何一个并将它们作为声明添加到令牌中。有关更多信息,请参阅本文

于 2017-05-22T03:13:40.210 回答