如何为托管在Azure AD上的WebAPI生成令牌?

如何为托管在Azure AD上的WebAPI生成令牌?,api,asp.net-web-api,asp.net-web-api2,azure-active-directory,Api,Asp.net Web Api,Asp.net Web Api2,Azure Active Directory,我有一个api托管在azure AD上 我在Startup.cs中有以下代码 我在这里看不到任何回发令牌生成代码: 如何从控制台应用程序获取用于调用此webapi的令牌?请查看nuget package-Microsoft.IdentityModel.Clients.ActiveDirectory 然后,您可以使用以下代码生成访问令牌: var authority = "https://login.microsoftonline.com/your-aad-tenant-id/oauth2/tok

我有一个api托管在azure AD上

我在Startup.cs中有以下代码

我在这里看不到任何回发令牌生成代码:


如何从控制台应用程序获取用于调用此webapi的令牌?

请查看nuget package-Microsoft.IdentityModel.Clients.ActiveDirectory

然后,您可以使用以下代码生成访问令牌:

var authority = "https://login.microsoftonline.com/your-aad-tenant-id/oauth2/token";
var context = new AuthenticationContext(authority);
var resource = "https://some-resource-you-want-access-to";

var clientCredentials = new ClientCredential(clientId, clientSecret);

var result = await context.AcquireTokenAsync(resource, clientCredentials);  

您需要为AAD clientId创建secret值

谢谢,但我在该webapi的web.config中没有ClientSecret,它只有clientId、AADInstance、Domain、TenantId、,PostLogoutRedirectUri我知道我们可以从portal.azure.com获取clientSecret,但这是将其存储在webconfig中的好方法吗?您需要为AAD clientId创建secret值,这意味着我需要生成clientSecret?很抱歉,我不明白。请看一下这个描述创建密钥的答案-。转到门户,找到AAD应用程序,然后按照说明创建密钥。完成后,您可以在控制台应用程序中使用它生成令牌并调用您的API。如果我没有密钥,我想我可以使用Keyvalue生成令牌吗?这是真的吗?
var authority = "https://login.microsoftonline.com/your-aad-tenant-id/oauth2/token";
var context = new AuthenticationContext(authority);
var resource = "https://some-resource-you-want-access-to";

var clientCredentials = new ClientCredential(clientId, clientSecret);

var result = await context.AcquireTokenAsync(resource, clientCredentials);