问题标签 [msal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
27111 浏览

javascript - 如何将 MSAL(Microsoft Authentication Library for js)正确导入和使用到 typescript react 单页应用程序中?

问题

我似乎无法让 MSAL 库正确导入到我的打字稿代码中。我在使用带有 react-typescript 脚本的 create-react-app 搭建的简单 typescript/react 项目中使用MSAL for JS库(应该有类型)。我是 typescript 的新手,不确定我是否遗漏了一些明显的东西,或者在将 MSAL 包与 typescript 项目一起使用时是否存在问题。

细节:

  1. 我从 NPM 添加了 MSAL 包,使用npm install --save msal.
  2. 我尝试使用不同形式的将 MSAL 导入到我的 .tsimport {Msal} from 'msal';
  3. 这会导致打字稿错误Could not find a declaration file for module 'msal'. '<path>/node_modules/msal/out/msal.js' implicitly has an 'any' type.
  4. 觉得这很奇怪,我查看了 node_module/msal/out 文件夹并看到了一个“msal.d.ts”文件,这正是我所期望的。
  5. 当我查看msal.d.ts文件的内容时,我看不到任何我通常希望看到的导出。
  6. 我尝试使用 @types 安装声明npm install --save-dev @types/msal,但它不存在。
  7. 我也尝试使用 将它导入我的文件let Msal = require('Msal');,但得到一个错误,即 Msal.UserAgentApplication 不是构造函数。
  8. 尝试使用 /// 参考指令并将脚本标记添加到主 index.html 时,我没有太多运气。这也不是解决问题的正确方法。

示例Msal.ts

tsconfig.json

0 投票
1 回答
1785 浏览

javascript - 在 azure webapp 中使用 MSAL.js 进行身份验证

我曾尝试将 MSAL 实现到我正在开发的 web 应用程序中,但我遇到了一些问题,尤其是 IE 和 Edge。

第一个问题出现在 chrome 和 IE/Edge 中。登录后,我得到 2 个弹出窗口。在第二个弹窗结束之前,程序已经调用了Graph API并返回了数据,所以为什么会显示,我不知道。代码如下:

除了显示 2 个弹出窗口外,它还可以在 chrome 中完美运行。如果我遗漏其中任何一项,我将无法通过身份验证。

现在,第二部分是一个但更有问题的部分。我已经包含了 polyfill 以使其在 IE 中工作,但我仍然遇到一些奇怪的事情。如果我没有在 IE 中禁用保护模式,两个弹出窗口都会打开,但第一个会重定向到 https://{site}.azurewebsites.net/null 。第二个弹出窗口重定向到 about:blank。正如预期的那样,两个窗户都没有关闭。

但是,如果我按照 MSAL.js 内部测试文档中的建议禁用保护模式,我会通过身份验证 - 弹出窗口不会自动关闭。对于多租户 webapp,这显然不是一个可行的解决方案。

我的身份验证流程是否真的有问题,或者我只是遗漏了什么?是否有任何关于在单页应用程序中使用 MSAL.js 运行身份验证的体面文档?

编辑:经过一番挖掘,我发现 authflow 也在用于进行静默呼叫的 iframe 中启动。是否有任何理由将整个页面也加载到所述 iframe 中?它运行我在 dom 准备好时运行的所有函数。

似乎没有呼叫是静音的,但总是需要一个弹出窗口..

0 投票
1 回答
298 浏览

c# - 在示例应用程序中获取“MsalException:ADFS 不是受支持的权限”

使用 WPF 示例:https ://github.com/Azure-Samples/active-directory-dotnet-desktop-msgraph-v2

而这个数据: 图片

我究竟做错了什么?

0 投票
1 回答
1559 浏览

.net - 来自服务的 Microsoft Graph API

我正在尝试一次授权 Office 365,只允许用户登录一次。

到目前为止,这是我的代码

我得到一个例外:AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope User.Read.All is not valid.

我不确定我应该如何获得一个有效的令牌,我可以退出并重新启动,而无需每小时弹出 authpage。

0 投票
2 回答
1412 浏览

ios - MSAL 库登录时没有响应

我正在尝试一个能够显示所有并为 Outlook 日历创建新事件的应用程序。我正在使用 MSAL 库来获取身份验证代码。问题是,虽然当我触摸输入或取消按钮时出现登录屏幕,但我没有注意到任何反应。这是我的代码:

0 投票
1 回答
8799 浏览

c# - Use MSAL Auth token to consume Web API 2

I have an ASP.Net Web API 2 on which I implemented the following security: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-devquickstarts-webapi-dotnet

It worked, I can't access the controllers except if I remove the [Authorize] attribute.

Now, I have a logged in user in a Xamarin app. The user is logged in via MSAL authentication which works fine too. Very basic implementation :

Now, I want to access the web API by giving the MSAL authentication token in the DefaultRequestHeaders with something like this :

Is there anyway this is possible ? How can I use this token to make my user consume my web API ?

Thank you !

0 投票
2 回答
1313 浏览

azure-active-directory - MSAL SSO 和身份验证代理

我一直在努力让 SSO 与 Intune 一起使用本机 ADAL 插件作为身份验证代理。一旦您正确设置了重定向 uris,对于 Android 和 iOS(尽管它需要 Microsoft Authenticator),获得该设置似乎相当简单。

我想了解更多有关如何使用 MSAL(尤其是 iOS)启用相同类型 SSO 体验的详细信息。我一直无法找到有关如何期望 SSO 流在 MSAL 中工作以及它如何与各种代理(如 Intune 和 Authenticator)集成的文档。有这方面的任何文件吗?它会像 ADAL 那样调用代理,还是使用不同的机制?一旦我们迁移到 MSAL,微软对这种行为的建议是什么?

0 投票
1 回答
836 浏览

msal - 有没有办法在 MSAL.js 中查找身份验证是否遵循 MSA 或 Azure AD

我尝试使用此处提供的代码:https ://github.com/Azure-Samples/active-directory-javascript-singlepageapp-dotnet-webapi-v2

它适用于 MSA 和 Azure AD 身份验证。我需要知道输入的电子邮件地址是 MSA 还是 Azure AD。有没有办法从响应中找出来?

0 投票
1 回答
1213 浏览

xamarin - Xamarin Microsoft.Identity.Client AuthenticationResult AccessToken 为空

我正在创建一个使用 Azure B2C 对用户进行身份验证的 Xamarin.Forms PCL 应用程序。我之前使用的是Microsoft.Identity.Client1.0.304142221-alpha 版本,但在 NuGet 上发布后我刚刚更新到 1.1.0-preview。

我还使用 AzureMobileServiceClient登录用户,因此只有经过身份验证的用户才能调用我的表。

我能够成功进行身份验证,我在 GitHub 上设置了这个示例。

使用以前的版本Microsoft.Identity.Client,我能够MobileServiceClient像这样登录:

但是,更新后,AuthenticationResult不再有一个名为Token. 相反,它有AccessToken,对我来说,总是返回null

MobileServiceClient我尝试使用登录IdToken,但这会产生未经授权的错误。

我认为这个问题可能与我定义的范围有关。现在我有:

是否有任何我缺少的范围来获得AccessToken或者是其他地方的问题?

更新:这是我在 Azure 门户中 为我的 API 设置的设置: 我的 Azure B2C API 设置

对于我的本地客户端: 我的 Azure B2C 本机客户端设置

在我的应用程序中,我是这样登录的:

LoginAsync现在正在执行,但它返回 null 所以我仍然无法调用表。

0 投票
2 回答
2476 浏览

azure - 带有刷新令牌的 Azure Active Directory B2C 定价说明

我对此处定义的 Azure AD B2C 定价结构感到困惑。这个问题似乎来自这个描述:

身份验证:响应用户发起的登录请求或应用程序代表用户发起的令牌(例如令牌刷新,刷新间隔是可配置的)。

在我的租户/应用程序的 Azure AD B2C 设置中,我定义了一个 SignInUp 策略,然后为访问/ID 令牌的生命周期(最长 24 小时)以及刷新令牌(最长 90 天)以及刷新滑动窗口边界(最长 365 天或没有到期)。这与根据身份验证定价收取的身份验证有何关系?

例如,如果我将我的访问/ID 令牌设置为 24 小时,我的刷新令牌设置为 90 天,并且我使用 MSAL 库来 AcquireTokenSilentlyAsync 并且我有一个用户每天都进入应用程序,我是否会为此收取 30 次身份验证费用每月用户,还是因为刷新令牌尚未过期而仅进行 1 次身份验证?

这在成本以及我是否可以使用 B2C 来满足我的应用程序身份验证需求方面产生了巨大差异。例如,每天有 100,000 名用户,如果我每月只收取 1 次身份验证费用,如果我的刷新令牌设置为 90 天,最终平均每月花费大约 50 美元,而如果它每 24 小时收取一次身份验证费用,我每月收费6300美元!对此的任何澄清表示赞赏。