【发布时间】:2018-11-06 13:36:51
【问题描述】:
我有一个通过 AD 登录启用授权/身份验证的 Azure 函数。
我正在尝试通过使用 client_credentials 生成令牌来进行身份验证:
参考以下代码:
var tokenendpoint = "https://login.microsoftonline.com/172f05a2-f956-4856-b4c8-9580a54dbd56/oauth2/token";
string clientID = "eaeff78a-26ef-4bcb-b977-638316ff15b7";
string clientSecret = "HvVlipQkpuezmD4YiUcWVpZ5Cn1cP3vxiW61pSpDo8k=";
string resource = "eaeff78a-26ef-4bcb-b977-638316ff15b7"; //ClientID
string grantType = "client_credentials";
using (var reqToken = new WebClient())
{
NameValueCollection parameters = new NameValueCollection();
parameters.Add("client_id", clientID);
parameters.Add("client_secret", clientSecret);
parameters.Add("resource", resource);
parameters.Add("grant_type", grantType);
var responseTokenBytes = reqToken.UploadValues(tokenendpoint, "POST", parameters);
string responseTokenContent = Encoding.UTF8.GetString(responseTokenBytes).Replace(@"\", "");
azureFunctionTokenResponse = responseTokenContent.Deserialize<AzureFunctionTokenResponseBase>();
AzureFunctionToken = azureFunctionTokenResponse.access_token;
}
如果我将资源设置为函数的 ClientID,一切正常。 但是,在许多在线示例中,Resource 设置为 Azure Function Uri。
如果我将 Resource 设置为 https://www.xxxxxx.azurewebsites.com,则会收到 401 错误。
这是为什么?
我花了一整天的时间让这个最终工作,但文档中没有任何地方说输入 ClientID 作为资源??
【问题讨论】:
标签: azure oauth-2.0 azure-functions