gpt4 book ai didi

azure - 在 Outlook Web 加载项中使用身份验证代码流获取访问 token

转载 作者:行者123 更新时间:2023-12-03 00:23:34 25 4
gpt4 key购买 nike

在我进行了所有研究和阅读 Microsoft 文档之后,我无法得出结论如何在 Outlook Web 加载项中使用身份验证代码流生成访问 token 。我可以在 Dialog API 的帮助下使用隐式授权流程成功生成访问 token ,该 API 只需打开 URL,然后我们从地址栏读取访问 token 。

为了更加安全,我尝试使用 Azure 中的注册应用程序利用身份验证代码流生成对图形 API/(自定义 SharePoint 网站)的访问 token 。

Azure 应用程序设置:在 Microsoft Graph 下添加了 API 权限。 [用户.阅读、站点.阅读.全部]重定向 Web URI:myapp/Auth_Result重定向 SPA URI:myapp/Auth_Result_SPA

Outlook Web 加载项中的代码:

使用 Dialog API 我打开 myapp/Auth 页面,该页面重定向到

https://login.microsoftonline.com/<Tenant ID>/oauth2/v2.0/authorize
?client_id=<Client ID>
&response_type=code
&redirect_uri=https%3A%2F%2Flocalhost%3A44333%2FAuth_result.html
&response_mode=query&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
&state=12345

上述 URL 在重定向页面 myapp/Auth_result 中生成授权代码并读取。

Auth_Result页面中的代码

function GetAccessToken(authCode) {
try {
var url = 'https://login.microsoftonline.com/<Tenant ID>/oauth2/v2.0/token';
var params = 'client_id=<Client ID>&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read&code=' + authCode + '&redirect_uri=https://localhost:44333/Auth_Result_SPA.html&grant_type=authorization_code';


var xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function (result) {
AccessTokenCallback(result);
}
xhr.send(params);
}
catch{ }
}

上述请求失败

Access to XMLHttpRequest at 'https://login.microsoftonline.com/<Tenant ID>/oauth2/v2.0/token' from origin 'https://localhost:44333' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

MessageRead.js:780 POST https://login.microsoftonline.com/<Tenant ID>/oauth2/v2.0/token net::ERR_FAILED

list 中的应用程序域

<AppDomain>https://login.microsoftonline.com/<Tenant ID>/oauth2/v2.0/token</AppDomain>
<AppDomain>https://login.microsoftonline.com</AppDomain>
<AppDomain>https://localhost:44333</AppDomain>
<AppDomain>https://localhost:44333/Auth</AppDomain>
<AppDomain>https://localhost:44333/Auth_Result</AppDomain>
<AppDomain>https://localhost:44333/Auth_Result_SPA</AppDomain>
<AppDomain>https://graph.microsoft.com</AppDomain>

我不确定我错过了什么?现在我想知道是否可以在 Outlook Web 插件中使用身份验证代码流?

伙计们,任何建议都会有帮助。

谢谢

------已编辑-------------

我尝试使用重定向 URI 作为 Web 平台的上述解决方案。

如果我在 azure 应用程序身份验证中使用 SPA 平台重定向 URI,则会收到以下错误:

由于某种原因,图像没有出现。错误文本:

AADSTS9002325:跨域授权码兑换需要代码交换证明 key 。

[![enter image description here][1]][1]

最佳答案

看起来眼前的问题是您的 Azure AD 客户端需要是单页应用程序,如 step 6 of my post 中所示,这样您就可以克服 CORS 错误。

桌面流程?

我相信您正在桌面应用程序 (Outlook) 的上下文中进行操作。如果是这样,那么官方 OAuth 选项将使用以下成分:

  • 授权代码流程 (PKCE)
  • 使用系统浏览器登录
  • 监听环回 URL 上的响应,例如 http://localhost:8000

查看我的Desktop Tutorial + Code Sample举个例子

关于azure - 在 Outlook Web 加载项中使用身份验证代码流获取访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63333036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com