Как упомянуто here, вы можете использовать приложения Azure AD для Client Credential Flow для учетных записей служб. Это не оптимально, но оно работает.
- Define an Azure AD App для Web API
- Define an Azure AD App в сервисный счет
- Настройка веб-API, чтобы принимать маркеры от вашего B2C Арендатором и Azure AD
- Запрос маркер доступа к учетной записи службы AD App для Web API
Примечание: убедитесь, что для создания приложения Azure AD под вашим арендатором B2C.
фрагмент кода, чтобы получить маркер доступа от C#
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri("https://login.microsoftonline.com");
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair<string, string>("grant_type", "client_credentials")
, new KeyValuePair<string, string>("client_id", "[service account app id")
, new KeyValuePair<string, string>("client_secret", "[client secret defined in the service account]")
, new KeyValuePair<string, string>("scope", "[App ID URI of the web api azure ad app]/.default")
});
var requestResult = await httpClient.PostAsync("/[your b2c tenant].onmicrosoft.com/oauth2/v2.0/token", content);
var contentResult = await requestResult.Content.ReadAsStringAsync();
var json = JObject.Parse(contentResult);
var accessToken = (string)json["access_token"];
}
Вы, вероятно, хотите, чтобы определить некоторые пользовательские требования (ы) для защиты Web API. См. 'Application Permissions' here.
Изменить манифест приложения на Web API Azure AD App
{
"appRoles": [{
"allowedMemberTypes": [
"Application"
],
"displayName": "Some display nane",
"id": "[create a new guid]",
"isEnabled": true,
"description": "Allow the application to _____ as itself.",
"value": "some-claim"
}
]
}
предоставить разрешение учетной записи службы Azure AD App для разрешения (ы) пользовательских приложений определенного
Разрешения, предоставленные учетной записи службы, возвращаются в претензии roles
:
{
"roles": [
"some-claim"
]
}
Пожалуйста upvote the user voice feedback item сделать это проще :)
Пожалуйста, отметьте ответ, если он отвечает на ваш вопрос –