当前位置: 首页 > 知识库问答 >
问题:

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

谭卜鹰
2023-03-14

对于需要调用Microsoft Graph API并从Office 365应用程序启动程序启动的单个租户web应用程序,我将使用哪种Azure Active Directory身份验证流?

Office 365使用与web应用相同的租户,我使用的是Azure AD v1endpoint。我尝试的示例不适用于此场景,因为它预期用户尚未登录。

我试了这个例子:https://github.com/microsoftgraph/aspnetcore-connect-sample

当直接转到应用程序时,它可以正常工作,但在Office 365应用程序启动器中单击其图标会立即显示以下错误:

Exception: OpenIdConnectAuthenticationHandler: message.State is null or empty.

解决方案是将用户注销并重新进行身份验证,以便获取要缓存的授权代码,还是应改用“代表”流?

共有2个答案

薛朝
2023-03-14

我能够通过添加Microsoft Graph URI作为OpenID Connect中间件的资源设置来解决问题。

现在,在启动应用程序时,会发送一个授权代码,我可以将其存储在令牌缓存中,稍后用于向图形 API 进行身份验证。

郭易安
2023-03-14

您似乎直接为应用程序的主页 URL 设置了登录 URL,而无需 state 参数。

要解决此问题,建议设置应用程序的主页。例如,此代码示例应为< code > https://localhost:44334 。如果您希望保护web应用程序并仅允许经过身份验证的用户访问,我们可以替换如下所示的< code>ConfigureServices方法中的代码,并删除< code>Home控制器中的< code>AllowAnonymous属性:

services.AddMvc(config =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
});

之后,当你通过 Office 365 应用门户访问应用时,它将首先重定向用户登录,然后他们才能访问该应用。

 类似资料:
  • 我在Windows下使用PostgreSQL9.5安装SN5.5。不幸的是,我打错误"Webapp没有启动"。 下面是完整的堆栈跟踪。我想我首先在“Exception sending context initialized event to listener instance of class org.sonar.server.platform.PlatformServletContextList

  • 你能告诉我Office365 REST API和EWS Java API之间的区别吗? 我为REST API搜索Java库,但没有可用的库。 两个月前,我在ews java api中提出了一个问题,但仍然没有得到他们的任何回应。 您能否建议任何可靠的解决方案来使用office365 API从Java应用程序。 使用我们需要注册我们的应用程序与Azure,我们可以重新Giter是免费的还是付费的。如

  • 概览 本指南将会指导你配置 Electron 应用为 特定协议 的默认处理器。 通过此教程,您会掌握如何设置您的应用以拦截并处理任意特定协议的URL的点击事件。 在本指南中,我们假定这个协议名为“electron-fiddle://”。 示例 主进程(main.js) 首先,我们需要从electron导入所需的模块。 这些模块有助于控制应用的生命周期,或创建原生的浏览器窗口。 const { ap

  • 问题内容: 我正在寻找一种从Matlab中启动应用程序的方法。问题是,我的Matlab脚本将一些结果保存到文件中,然后应在关联的应用程序中打开(在这种情况下为Blender)。 我熟悉类似的命令 要么 以及其他一些方法,但实际上,该应用程序是从Matlab PATH启动的,因此它在Matlab目录中查找所需的各种库。例如: 是否有某种方法可以启动使用全局(系统)PATH的应用程序? 不久前,我以为

  • 问题内容: 我怎么知道我的Vaadin 7 Web应用程序何时首次启动/启动,这样我才能进行一些初始设置? 同样,我怎么知道我的Web应用程序何时结束,关闭/退出? 问题答案: Vaadin建立在Java Servlet 技术之上。“上下文”是Servlet术语中Web应用程序的技术术语。因此,这里的答案不是特定于Vaadin的,它适用于任何Servlet- 归根结底,Vaadin只是一个大型Se

  • 问题内容: 我可以使用Maven编译并启动Spring项目: 但是,当我使用(包括)将所有jar组合到一个文件中时,在执行过程中总是会得到一个: 我还尝试将架构定义(即等)直接附加到类路径,但是没有成功。 问题答案: Spring命名空间处理程序使用文件和解析。由于具有这些名称的文件存在于不同的Spring jar中,因此可能只有其中一个保留在目标jar之后。 也许您可以手动合并这些文件,然后以某