再会!
我正在尝试配置我的 Azure API 应用程序,使其只能由受信任的应用程序使用 Azure AD(公共认证)访问。我在 AD 中为 WPF 应用程序和我的 API 应用程序创建了实体。我授予我的 WPF 应用程序实体访问我的 API 应用程序的权限。我使用以下方法访问我的 API。
public Task<string> COGetOrganisationsAsync()
{
if(adAuth == null) adAuth = new coADAuthentication(ClientID, RedirectURL, Authority, ResourceURI);
string token = adAuth.AcquireTokenOrRefresh();
using(HttpClient httpClient = new HttpClient())
{
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
Uri requestURI = new Uri(new Uri(Authority), "Organization/GetAll");
HttpRequestMessage httpRequest = new HttpRequestMessage(new HttpMethod("POST"), requestURI);
var req = httpClient.PostAsync(requestURI, httpRequest.Content).ContinueWith(httpResponseMessage =>
{
return httpResponseMessage.Result.Content.ReadAsStringAsync();
});
return req.Result;
}
我成功收到了一个有效的令牌,我将它添加到标题中。我的 req.Result 在以下消息中
{ "status": 403, "source":" https://serviceplan-resourceg01234567890abcdef.azurewebsites.net/MyMethod/GetAll ", "message": "Permissions for service \"myService\" 设置为公共身份验证但没有身份验证与请求相关联。” }
状态 403 告诉我服务器确实收到了我的请求,但它是禁止的。代码工作正常,因为当我将身份验证更改为公共时,我收到了正确的数据。
我不确定我的 Azure AD 配置是否正确,但我这几天一直在寻找解决方案。Azure 文档分散、过时或对我的特定场景没有用处。
我的问题是,有没有其他人有同样的问题,有人可以建议我一些有用的文档吗?
非常感谢!