Фактически, это то же самое, что и обычный веб-API для настройки AD для службы Odata.Таким образом, вы можете обратиться к этому примеру: https://github.com/azure-samples/active-directory-dotnet-daemon
Незначительное различие на стороне клиента.Поскольку код клиента генерируется «Генератором кода клиента Odata», он не использует класс клиента HTTP.Вам нужно использовать DataServiceContext.SendingRequest Event , чтобы добавить заголовок авторизации.
См. Код ниже:
private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string appKey = ConfigurationManager.AppSettings["ida:AppKey"];
private static string OdataServiceId = ConfigurationManager.AppSettings["OdataTestId"];
static string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
private static AuthenticationContext authContext = null;
private static ClientCredential clientCredential = null;
// Get an entire entity set.
static void ListAllProducts(Default.Container container)
{
foreach (var p in container.Products)
{
Console.WriteLine("{0} {1} {2}", p.Name, p.Price, p.Category);
}
}
static void AddProduct(Default.Container container, OdataTest.Models.Product product)
{
container.SendingRequest2 += Container_SendingRequest2;
container.AddToProducts(product);
var serviceResponse = container.SaveChanges();
foreach (var operationResponse in serviceResponse)
{
Console.WriteLine("Response: {0}", operationResponse.StatusCode);
}
}
private static void Container_SendingRequest2(object sender, Microsoft.OData.Client.SendingRequest2EventArgs e)
{
AuthenticationResult result= authContext.AcquireTokenAsync(OdataServiceId, clientCredential).Result;
e.RequestMessage.SetHeader("Authorization", "Bearer " + result.AccessToken);
}
static void Main(string[] args)
{
authContext = new AuthenticationContext(authority);
clientCredential = new ClientCredential(clientId, appKey);
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:59837/";
var container = new Default.Container(new Uri(serviceUri));
var product = new OdataTest.Models.Product()
{
Name = "Yo-yo",
Category = "Toys",
Price = 4.95M
};
AddProduct(container, product);
ListAllProducts(container);
Console.ReadKey();
}
}