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

时间:2020-05-11 11:33:04

标签: javascript rest azure-active-directory basic-authentication microsoft-teams

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

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

https://docs.microsoft.com/en-us/learn/modules/embedded-web-experiences/7-exercise-implement-tab-authentication

以上教程向用户显示了登录提示并验证了客户端。我如何为基本身份验证实现类似的东西?

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

EDIT2

为了完整起见,我包括一个最终工作的示例客户端调用(它像在浏览器中一样第一次向用户显示登录弹出窗口):

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));

3 个答案:

答案 0 :(得分:1)

我假设您正在尝试访问一些需要基本身份验证的外部页面或资源。否则,没有理由尝试宣誓。 团队似乎支持标签的基本身份验证,例如,我可以将标签添加到带有基本身份验证的网站上,然后会出现一个紫色弹出窗口,但是如何从应用程序中触发它却是另一回事。 假设您一直在应用程序中一直调用https://api.abc.com/whatever,则一种“也许”的解决方案是将iframe嵌入团队应用程序视图中的某个位置,然后加载该域,例如https://api.abc.com/test(如果该页面)需要身份验证,它应该弹出这个紫色的身份验证窗口,您可以在其中键入“基本身份验证”。完成此操作后,理论上“浏览器”团队现在应该已对会话进行身份验证。

如果您不喜欢这种方式,则可以在应用程序中创建一个初始页面,在该页面中输入用户名和密码,然后输入内容,然后进行如下所示的http调用:https://stackoverflow.com/a/57665644/13470894?< / p>

希望这会有所帮助

此致

答案 1 :(得分:0)

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

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

  • 弄清楚要询问最终用户的用户名/密码的原因,这基本上是基本身份验证所需的

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

但是同样,Azure AD不支持基本身份验证。实际上,Microsoft已弃用Exchange Online的基本身份验证为announced here

答案 2 :(得分:0)

有些API会显示“基本身份验证”窗口/尝试访问它们时出错,但实际上,可以通过传递一些auth标头(有时是完全自定义)来进行访问。

与API所有者联系并询问有关信息,如果不与他们交谈,您将无能为力。