我将使用哪个Azure Active Directory身份验证流程用于需要调用Microsoft Graph API并从Office 365应用启动器启动的单租户Web应用程序?
Office 365使用与Web应用程序相同的租户,我正在使用Azure AD v1端点。我尝试的示例对于这种情况并不适用,因为它希望用户不会已登录。
我尝试了这个例子:https://github.com/microsoftgraph/aspnetcore-connect-sample
直接转到应用程序时它可以正常工作,但在Office 365应用启动器中单击其图标会立即显示以下错误:
NgModule
解决方案是签署用户并重新验证它们以获取缓存授权代码,还是应该使用“代表”流程?
答案 0 :(得分:0)
您似乎直接为没有state
参数的应用的主页网址设置了登录网址。
要解决此问题,建议您设置应用的主页。例如,此代码示例应为https://localhost:44334
。如果您想要保护网络应用并仅允许身份验证用户访问,我们可以使用下面的ConfigureServices
方法替换代码并删除AllowAnonymous
控制器中的Home
属性:
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
之后,当您通过Office 365应用程序门户访问该应用程序时,它将首先重定向用户登录,然后才能访问该应用程序。
答案 1 :(得分:0)
我能够通过添加Microsoft Graph URI作为OpenID Connect中间件的资源设置来解决问题。
现在,在启动应用程序时,会发送授权代码,我可以将其存储在令牌缓存中,稍后用于对图谱API进行身份验证。