从Office 365启动的用于Web App的Azure Active Directory流
我将使用哪种Azure Active Directory认证流用于需要调用Microsoft Graph API并从Office 365应用启动器启动的单租户Web应用程序?从Office 365启动的用于Web App的Azure Active Directory流
Office 365使用的是与Web应用程序相同的租户,而我正在使用Azure AD v1端点。我试过的例子对于这种情况并不适用,因为它预计用户不能登录。
我试过了这个例子:https://github.com/microsoftgraph/aspnetcore-connect-sample
打算何时将应用程序直接,但点击在Office 365应用启动器图标就会立即显示出下面的错误它工作正常:
Exception: OpenIdConnectAuthenticationHandler: message.State is null or empty.
是解决方案签署用户并重新验证它们以获得授权代码以缓存,还是应该使用“代表”流代替?
您似乎直接为应用程序主页的URL设置了登录URL,而没有使用state
参数。
要解决该问题,建议您设置应用的主页。例如,此代码示例应为https://localhost:44334
。如果你想保护的Web应用程序,只允许进行身份验证的用户访问,我们可以更换的代码ConfigureServices
方法像下面,并在Home
控制器删除AllowAnonymous
属性:
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
之后,当您访问应用程序通过Office 365应用程序门户,它将首先重定向用户登录,然后才能访问应用程序。
我尝试将_Authorize_属性添加到_HomeController_,但它仍然没有 - 验证用户。我认为是因为cookie认证中间件。 – dallasg
您是否在'Home'控制器的'Index'操作中删除了'AllowAnonymous'属性? –
我能够通过添加Microsoft Graph URI作为OpenID Connect中间件的资源设置来解决问题。
现在,当启动应用程序时,会发送一个授权码,我可以将其存储在令牌缓存中并稍后用于对Graph API进行身份验证。
Hi @dallasg,当我们尝试实现Azure AD v2(MSAL)身份验证端点时,我们遇到了一些依赖冲突。 netcore2.0可能会解决这个问题,因此样本将在未来几周内更新。如果您也遇到此示例的错误,请提交问题:https://github.com/microsoftgraph/aspnetcore-connect-sample/issues –