从Office 365启动的Web应用程序的Azure Active Directory流程

时间:2017-09-13 20:17:50

标签: asp.net office365 azure-active-directory openid-connect

我将使用哪个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

解决方案是签署用户并重新验证它们以获取缓存授权代码,还是应该使用“代表”流程?

2 个答案:

答案 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进行身份验证。