Azure active directory Azure应用程序清单试图通过Outlook web加载项中的office js helpers进行身份验证时出现问题

Azure active directory Azure应用程序清单试图通过Outlook web加载项中的office js helpers进行身份验证时出现问题,azure-active-directory,office-js,outlook-web-addins,office-js-helpers,Azure Active Directory,Office Js,Outlook Web Addins,Office Js Helpers,我使用的目的是在Outlook web加载项中获取OAuth令牌,以便可以将其用于EWS托管API的OAuth凭据(该代码位于使用ASP.NET web API的Azure应用程序服务中) 我已在我的测试Office 365租户(例如mytenant.onmicrosoft.com,它不是托管web应用程序的同一Azure订阅-如果有必要)中将我的应用程序注册配置为oauth2AllowImplicitFlow设置为true的本机应用程序。我使用本机应用程序类型而不是Web/API应用程序来绕过

我使用的目的是在Outlook web加载项中获取OAuth令牌,以便可以将其用于EWS托管API的OAuth凭据(该代码位于使用ASP.NET web API的Azure应用程序服务中)

我已在我的测试Office 365租户(例如mytenant.onmicrosoft.com,它不是托管web应用程序的同一Azure订阅-如果有必要)中将我的应用程序注册配置为oauth2AllowImplicitFlow设置为true的本机应用程序。我使用本机应用程序类型而不是Web/API应用程序来绕过一个意外错误,该错误指示我的应用程序需要管理员同意-即使没有请求应用程序权限-但这是另一回事(也许我必须使用本机-不是100%确定)

我确保应用程序注册中的重定向URI(也称为回复URL)指向与Outlook加载项相同的页面(例如)

这是我的应用程序清单:

<AppDomains>
 <AppDomain>https://login.windows.net</AppDomain>
 <AppDomain>https://login.microsoftonline.com</AppDomain>
</AppDomains>
{
“appId”:“a11aaa11-1a5c-484a-b1d6-86c298e8f250”,
“批准”:[],
“其他租户可用”:正确,
“displayName”:“我的应用程序”,
“errorUrl”:空,
“groupMembershipClaims”:空,
“可选声明”:空,
“acceptMappedClaims”:空,
“主页”:https://myapp.azurewebsites.net/MessageRead.html",
“鉴定人”:[],
“密钥凭据”:[],
“knownClientApplications”:[],
“logoutUrl”:空,
“oauth2AllowImplicitFlow”:正确,
“oauth2AllowUrlPathMatching”:false,
“oauth2Permissions”:[],
“oauth2RequiredPostResponse”:false,
“objectId:“a11aaa11-99a1-4044-a950-937b484deb8e”,
“密码凭据”:[],
“公共客户”:正确,
“supportsConvergence”:空,
“答复”:[
"https://myapp.azurewebsites.net/MessageRead.html"
],
“requiredResourceAccess”:[
{
“resourceAppId”:“00000003-0000-0000-c000-000000000000”,
“资源访问”:[
{
“id”:“e1fe6dd8-ba31-4d61-89e7-88639da4683d”,
“类型”:“范围”
}
]
},
{
“resourceAppId”:“00000002-0000-0000-c000-000000000000”,
“资源访问”:[
{
“id”:“311a71cc-e848-46a1-bdf8-97ff7156d8e6”,
“类型”:“范围”
},
{
“id”:“a42657d6-7f20-40e3-b6f0-cee03008a62a”,
“类型”:“范围”
}
]
},
{
“resourceAppId:“00000002-0000-0ff1-ce00-000000000000”,
“资源访问”:[
{
“id”:“2e83d72d-8895-4b66-9eea-abb43449ab8b”,
“类型”:“范围”
},
{
“id”:“ab4f2b77-0b06-4fc1-a9de-02113fc2ab7c”,
“类型”:“范围”
},
{
“id”:“5eb43c10-865a-4259-960a-83946678f8dd”,
“类型”:“范围”
},
{
“id”:“3b5f3d61-589b-4a3c-a359-5dd4b5ee5bd5”,
“类型”:“范围”
}
]
}
],
“samlMetadataUrl”:空
}

我还确保将授权URL添加到我的外接程序的清单中:

<AppDomains>
 <AppDomain>https://login.windows.net</AppDomain>
 <AppDomain>https://login.microsoftonline.com</AppDomain>
</AppDomains>
现在,外接程序中的代码可以正确登录用户并请求所需的权限,但在单击应用程序授权步骤上的“接受”按钮后,返回以下错误:

AADSTS50011:回复地址“”与为应用程序配置的回复地址不匹配:“a11aaa11-1a5c-484a-b1d6-86c298e8f250”。更多详细信息:未指定

现在,每次单击“登录”按钮(不再提示用户登录)时,都会返回错误。它从未检索到令牌。完整的身份验证URL为:


我做错了什么?问题是否可能是因为web应用的主机名(重定向URI)与承载应用注册的Azure AD租户的域不匹配?如果是,我如何从托管不具有Office 365或Exchange Online的web应用的Azure订阅授予Exchange Online的权限?我是否必须向我的测试Office 365租户添加Azure订阅,以便它也可以承载web应用程序???

从应用程序清单中,我发现您使用了
https://myapp.azurewebsites.net/MessageRead.html
作为一个
回复URL
。 下面是您用来获得用户同意的url

如果您观察上述url,您提到了
重定向\u uri
https://myapp.azurewebsites.net
。但是重定向uri应该至少与应用程序清单中提到的
replyurl
中的一个匹配

尝试替换
https://myapp.azurewebsites.net
https://myapp.azurewebsites.net/MessageRead.html
在授权url中

我已经在下面的url中更新了它们,如果你想你可以直接试试下面的url


不幸的是,我无法更改URL-这是由office js助手在内部处理的。我刚刚注意到URL出现在异常跟踪中更深一层的auth对话框返回的错误中。请在应用程序清单中将replyUrl值更新为,然后检查?是否使用该URL(不带/MessageRead.html)弹出式验证器将打开一个空白页面,因为我没有根页面。我查看了office js helper的文档,发现网站的根url将自动作为重定向url。你能把你网站的根url映射到某个html文件吗?你能在其中包含身份验证功能吗?我试过了,同样的错误。也许我需要将身份验证过程重置到提示用户再次登录的位置,但我不知道如何执行此操作。单击“登录”按钮确实会打开授权页面(不是从我的web服务器),但它会显示与我文章中相同的错误。我将尝试联系office js helpers团队,了解他们的GitHub回购协议