我们目前有一个客户端(MVC .Net Core Web应用程序)和用于访问Microsoft Graph调用的Web API,身份验证过程使用Azure AD v2.0终结点。如果我们在客户端中执行所有这些操作,则可以使此功能正常工作,但是,一旦将令牌传递给Web API,该操作就会失败,甚至不会返回响应来帮助我们进行诊断。以下是我们尝试过的大量工作,我们得出的结论是我们的天蓝色没有正确设置但不确定。
过程1有效
我们忘记了Web API,而是在客户端内部执行了所有操作,此方法有效,但不符合我们的要求,因此我们知道代码未损坏。
进程2失败
进程3失败
天蓝色设置
在Microsoft Azure中,我们尝试将Microsoft Active Directory配置为遵循this example。但是,这使用WPF,无法使其正常工作。我们会逐步进行操作,甚至会提示用户API权限仍然不起作用。很高兴提供任何进一步的信息来帮助诊断此问题。
更新 这是我们在其中交换访问令牌的授权代码的地方,但是,它没有返回响应,并且在大约100秒后超时,甚至无法继续。
HttpContent content = new FormUrlEncodedContent(new Dictionary<string, string>
{
{"code", code},
{"client_id", _clientId},
{"client_secret", _clientSecret},
{"redirect_uri", _redirectUri},
{"grant_type", _codeGrantType}
});
using (HttpClient client = new HttpClient())
{
var response = await client.PostAsync(_tokenServerUrl, content);
if (response.IsSuccessStatusCode)
{
//get token from body and update expiry time...
var token = await response.Content.ReadAsJsonAsync<OAuthToken>();
token.ExpiresOn = DateTime.Now.AddSeconds(token.ExpiresIn - 100);
return token;
}