使用 Azure AD 进行身份验证,手动 GET 请求成功但 .net 框架应用程序失败

Authentication using Azure AD, successful with manual GET request but failing with .net framework app

我正在按照本指南 (enter link description here) 访问 Skype for Business 资源。当我尝试 InsomniaPostman 时一切正常,但当我使用我的 .net 框架应用程序时我失败了。首先让我们看看手动调用:每当我发出如下图所示的 GET 请求时,我都会被重定向到 Microsoft 的登录页面,我使用我的凭据登录并在 return(在 url 中)我看到了下一步所需的授权令牌。

现在,我正尝试通过我的 .net 框架应用程序实现相同的行为,但它说我需要一个我不使用的 客户端密码在手动调用中。代码如下:

所以应用程序运行,弹出 window 用于插入我的凭据,我输入我的用户名和密码,然后出现以下错误:

可能与 RedirectUri 有关?如果手动调用成功,在我插入我的凭据后,我将被重定向到 redirect_uri 中指定的页面(在我的情况下不起作用)但至少我得到了令牌,请参阅图片:

如果您使用的是webapp/api应用类型,您需要通过clientSecret获取token。这是代码示例。

var authContext = new AuthenticationContext(context.Options.Authority, new NaiveSessionCache(userObjectId, context.HttpContext.Session));
                var credential = new ClientCredential(context.Options.ClientId, context.Options.ClientSecret);
                var token2 = await authContext.AcquireTokenAsync(context.Options.Resource,credential);

如果不想通过clientSecret获取token,需要使用NativeClient应用类型。

您可以在 Azure 门户上找到您的应用程序类型。