最近在我的客户端域中试用Azure Functions,我已经成功部署了一个,并从.NET控制台应用程序中调用了它。
我想将对功能的访问限制为属于AD组成员的内部用户。我意识到这可能不是功能的含义,所以请不要犹豫表达您的保留意见。
尽管花了很多时间进行搜索,但我只能实现激活AppService身份验证,如here在“配置身份验证和授权”部分所述。
然后,我的控制台应用程序开始失败,响应内容为代码401未经授权,并且响应内容中显示“您无权查看此目录或页面”-到目前为止很好...我当时以为我可以告诉Azure要求成员身份在一个AD组中调用功能,如WCF,但是如何?我无法管理客户端的Azure Active Directory,所以也许我无法到达可以建立此关联的位置(尽可能)。
这是我调用该函数的代码:
private static async void CallMyTypedFunctionAsync()
{
var functionAddress = "https://[...].azurewebsites.net/api/MyTypedFunction";
var requestDto = new DataContracts.MyTypedFunctionReqest { X = 6, Y = 7 };
HttpRequestMessage message = new HttpRequestMessage(HttpMethod.Post, functionAddress)
{
Content = new StringContent(JsonConvert.SerializeObject(requestDto), Encoding.UTF8, "application/json")
};
var httpClient = new HttpClient();
var response = await httpClient.SendAsync(message);
var responseContent = await response.Content.ReadAsStringAsync();
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
var responseDto = JsonConvert.DeserializeObject<DataContracts.MyTypedFunctionResponse>(responseContent);
Console.WriteLine("CallMyTypedFunctionAsync's result: {0}", responseDto.Z); // 42
}
else
Console.WriteLine("CallMyTypedFunctionAsync has failed. {0}: {1}", response.StatusCode, responseContent);
}
答案 0 :(得分:1)
正如Thomas所提到的,您需要将AD同步到Azure AD目录。 如何做,您可以参考Integrate your on-premises directories with Azure Active Directory。
关于如何访问受Azure AD保护的Azure功能,请参考“功能”部分中的“使用身份验证” Azure Functions and App Service Authentication