Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基本身份验证而不是AAD(Azure Active Directory)身份验证_Javascript_Rest_Azure Active Directory_Basic Authentication_Microsoft Teams - Fatal编程技术网

Javascript 基本身份验证而不是AAD(Azure Active Directory)身份验证

Javascript 基本身份验证而不是AAD(Azure Active Directory)身份验证,javascript,rest,azure-active-directory,basic-authentication,microsoft-teams,Javascript,Rest,Azure Active Directory,Basic Authentication,Microsoft Teams,我的Microsoft Team应用程序需要访问使用基本身份验证的REST web服务 这些教程似乎只展示了如何使用Azure Active Directory进行身份验证: 上面的教程向用户显示登录提示并验证客户端。如何为基本身份验证实现类似的功能 编辑:我之所以提到客户端,是因为我希望团队记住登录名。web服务基本上是用于协作的。所以我不能对所有用户使用相同的帐户 EDIT2 为完整起见,我提供了一个示例客户端调用,该调用最终成功(它第一次向用户显示登录弹出窗口,就像在浏览器中一样): A

我的Microsoft Team应用程序需要访问使用基本身份验证的REST web服务

这些教程似乎只展示了如何使用Azure Active Directory进行身份验证:

上面的教程向用户显示登录提示并验证客户端。如何为基本身份验证实现类似的功能

编辑:我之所以提到客户端,是因为我希望团队记住登录名。web服务基本上是用于协作的。所以我不能对所有用户使用相同的帐户

EDIT2

为完整起见,我提供了一个示例客户端调用,该调用最终成功(它第一次向用户显示登录弹出窗口,就像在浏览器中一样):


Azure AD不支持外部服务的基本身份验证。您有两个选择:

  • 如果可以的话,从基本身份验证迁移到“现代身份验证”(OpenID Connect/OAuth/(最后手段)SAML)。这个是首选

  • 找出一个wat来询问最终用户的用户名/密码,因为这基本上就是基本身份验证所需要的

最后但并非最不重要的一点是,如果您的web服务实际上不需要用户帐户,而只需要服务帐户,则可以将有关该web服务的身份验证详细信息保存在Azure KeyVault中,并在需要构造基本身份验证头时将其读取


但同样,Azure AD不支持基本身份验证。事实上,Microsoft不推荐Exchange Online的basic auth作为。

我假设您试图访问需要basic auth的外部页面或资源。。否则就没有理由去做誓言。 团队似乎支持选项卡的基本身份验证,例如我可以添加一个选项卡,将其指向具有基本身份验证的网站,然后会出现一个紫色的弹出窗口,但如何从应用程序触发它将是另一回事。 假设你一直在应用程序中调用,一个“可能”的解决方案是在你的团队应用程序视图中的某个地方嵌入一个iframe,并加载该域,比如如果该页面需要身份验证,它会弹出这个紫色的身份验证窗口,你可以在其中键入“基本身份验证”。这样做之后,理论上团队“浏览器”现在应该有一个会话授权

如果你不喜欢这种方式,你可以在你的应用程序中创建一个初始页面,用户在其中输入用户名和密码,获取输入信息,然后进行如下http调用:

希望这能有所帮助


关于,

有一些API,它们在尝试访问时显示基本的身份验证窗口/错误,但事实上,访问可以通过传递一些身份验证头来实现,有时完全是自定义的


与API所有者联系并询问此事,如果不与他们交谈,你将无法做更多事情。

我编辑了这个问题,以澄清这是一个团队应用程序。那么,团队应用程序是否内置支持外部服务的基本身份验证?您提到构建一个基本的Auth头。这个功能是团队JavaScript SDK的一部分吗?我不希望对所有用户使用相同的帐户,因为web服务跟踪用户的更改,我实际上控制双方的身份验证方法。基本身份验证是此web服务唯一可用的东西,它在我的浏览器中运行良好。我想知道团队通常是如何做到这一点的,因为团队对我来说是新事物。希望这样,团队能够记住登录。因为,我还试图避免用户必须登录每个请求。这就是为什么我提到客户端,正如您所建议的,我刚刚使用一个带有基本身份验证的页面作为选项卡进行了测试。事实上,我看到了紫色的弹出窗口登录!这看起来很有趣。也许有一个标准的团队JavaScript-SDK组件可以做到这一点。我会调查的…我不认为我可以使用你所指的答案,因为它是服务器端的。我希望团队记住登录名。它是特定于用户的。但是我正在研究你的其他建议谢谢!这为我指明了正确的方向。解决方案是简单地调用web服务客户端。与浏览器一样,微软团队向用户显示一个弹出窗口,让用户第一次登录,然后记住会话的密码
var url = "https://example.com/Service.svc/Request";
var init = {credentials:"include", headers:{"Accept":"application/json"}};
fetch(url,init)
    .then(response => response.text())
    .then(data => alert(data));