无法从Azure AD中注册的应用程序获取访问令牌
我正在尝试在nugget manager中实例化来自Microsoft.Graph的GraphServiceClient的新实例 我们已经做了什么:无法从Azure AD中注册的应用程序获取访问令牌,azure,post,azure-active-directory,microsoft-graph-api,access-token,Azure,Post,Azure Active Directory,Microsoft Graph Api,Access Token,我正在尝试在nugget manager中实例化来自Microsoft.Graph的GraphServiceClient的新实例 我们已经做了什么: 创建ASP.NET Core 2.0控制台应用程序 从Nugget添加Microsoft.Graph 在Azure广告门户中注册应用程序以获取应用程序机密ID(应用程序密码)和应用程序ID(客户端ID) 从Azure AD门户检索租户ID(目录ID) 基本上,以下是我的ASP.NET Core 2.0 projet(控制台应用程序)的全部代码: 远
{
"token_type": "Bearer",
"expires_in": 3599,
"access_token":
"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBP..."
}
我需要的是初始化GraphServiceClient的访问令牌
你知道为什么Microsoft Azure在这个请求上失败了吗?你应该听从juunas的建议,使用像ADAL这样的库,它会帮你做到这一点 如果您想自己调用来检索令牌,首先通过测试来自Postman等工具的相同请求来验证问题是否来自代码,而不是来自应用程序注册。当您收到错误400时,可能是因为您的代码错误,并且您的请求格式不正确
我不习惯使用WebClient进行http调用,所以我不知道出了什么问题,但我想说这可能与您处理参数的方式有关。如果我是你,我会使用和HttpClient,你可以找到一些使用stackoverflow()编码的表单url的查询示例。你应该遵循juunas的建议,使用像ADAL这样的库,它可以为你做这些 如果您想自己调用来检索令牌,首先通过测试来自Postman等工具的相同请求来验证问题是否来自代码,而不是来自应用程序注册。当您收到错误400时,可能是因为您的代码错误,并且您的请求格式不正确
我不习惯使用WebClient进行http调用,所以我不知道出了什么问题,但我想说这可能与您处理参数的方式有关。如果我是你,我会使用和HttpClient,你可以找到一些查询示例,其中表单url编码为stackoverflow()。你应该查看ADAL(Azure AD身份验证库)。它可以为您处理令牌获取。这里有一些很棒的快速入门,向您展示了如何使用ASP.NET获得第一次调用。这将使用MSAL库,而不是自己编写代码来获取访问令牌。您应该查看ADAL(Azure AD authentication library)。它可以为您处理令牌获取。这里有一个很好的快速入门,向您展示了如何使用ASP.NET获得最初的调用。这将使用MSAL库而不是自己编写代码来获取访问令牌。我最终通过使用HttpClient而不是WebClient使其工作,我还需要更改“范围”参数的值为“”。我最终通过使用HttpClient而不是WebClient使其工作,我还需要将“scope”参数的值更改为“”。
string url = $"https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token";
string @params = $"client_id={appId}&" +
"scope=User.Read&" +
$"client_secret={appSecret}&" +
"grant_type=client_credentials";
jsonStringResult = webClient.UploadString(url, @params);
{
"token_type": "Bearer",
"expires_in": 3599,
"access_token":
"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBP..."
}