问题标签 [microsoft-identity-web]

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 投票
1 回答
104 浏览

azure-active-directory - MSAL4j - 如何处理 MsalThrottlingException?

我使用 MSAL4j,并且有一个名为 MsalThrottlingException 的异常类型。抓到的时候怎么处理?我需要一个示例实现。

在此处输入图像描述 https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-error-handling-java

也有关于它的文档(您可以在上面的链接中看到屏幕截图),但它没有给出处理实现的示例。你能举个例子吗?

0 投票
1 回答
146 浏览

asp.net-core-3.1 - 从 Microsoft.Identity.Web 登录/注销捕获事件

我正在使用 Microsoft 的身份验证/授权平台来允许用户从 Azure AD 登录。我想将这些事件记录到数据库中。问题是,由于这种类型的身份验证利用中间件,我不确定如何注入代码来触发日志事件。

请让我知道是否存在我尚未找到的文档和/或如何编写自定义注入来记录这些事件。

谢谢!

0 投票
1 回答
97 浏览

javascript - 如何使用 Microsoft Share To Teams 按钮对用户进行身份验证?

如this microsoft offcial doc中所述,我在我的html页面上添加了共享到团队按钮,但是在打开的弹出窗口中它给出了错误

https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/share-to-teams#:~:text=pop%2Dup%20experience%3A-,Embed%20a% 20Share%20to%20Teams%20button,js%20script%20on%20your%20webpage.&text=添加%20a%20HTML%20element%20on,in%20the%20data%2Dhref%20attribute.&text=或者%2C%20if%20you% 20want%20a,icon%2Dpx%2Dsize%20attribute

在此处输入图像描述.

那么如何对用户进行身份验证,我们是否必须为此调用另一个 API 或其他任何东西......

当我搜索时,我发现了 Graph API,但不知道这是我需要的或如何使用它。

我创建了这个简单的 html 页面。

在此处输入图像描述

HTML 代码

0 投票
1 回答
172 浏览

asp.net-core - Microsoft Identity Web 为 redirect_url 生成 http 而不是 https

我有一个 ASP.NET Core MVC 应用程序,我想使用 Azure B2C 身份验证。

正在生成的 redirect_urlhttp不是https这样的:

这应该是https,它导致了这个错误:

AADSTS50011:请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:“9dbe40e0-7555-4ddf-9c17-b5218ed6ca89”。

我的appsettings.json样子是这样的:

我的代码Startup.cs是这样的:

出于某种原因,这在我的带有 localhost (redirect_url=https) 的开发机器上运行良好,但在服务器上它总是http.

有任何想法吗?这让我整天发疯

编辑:已解决! 原来问题是我在 IIS 中没有 HTTPS 绑定,只有 HTTP 绑定......奇怪,因为我通过 https:// 访问该站点...... - 我猜 IIS 以某种方式提供了一个证书和允许 HTTPS,即使我没有绑定它

0 投票
0 回答
731 浏览

c# - 使用 DefaultAzureCredential 时,Web 应用会尝试在本地计算机上使用 ManagedIdentityCredential

我正在使用DefaulAzureCredential (Azure.Identity v1.2.3) 来访问 Azure 上的资源。在我的 Asp.Net Core 3.1 Web 应用程序的 Program.cs 中,我配置了 Azure 密钥保管库访问权限,如下所示:

当我通过按 F5 从 Visual Studio 2019 调试源代码时,上述代码在我的本地计算机上按预期工作。从 MS 文档(上面的链接)中,我看到 DefaultAzureCredential 将尝试按以下顺序使用各种凭据:EnvironmentCredential、ManagedIdentityCredential、SharedTokenCacheCredential、VisualStudioCredential 等。我通过将 DefaultAzureCredential 替换为以上凭据:

上面很快就抛出了异常:CredentialUnavailableException: EnvironmentCredential authentication不可用。环境变量未完全配置。

ManagedIdentityCredential 会引发类似的异常:CredentialUnavailableException:ManagedIdentityCredential 身份验证不可用。未找到托管身份端点。

但是,SharedTokenCacheCredential 和 VisualStudioCredential 都有效。

现在,我认为上述行为是正确的。我没有设置所需的环境变量(例如租户 ID、客户端 ID 等),并且我认为 ManagedIdentityCredential 仅在我的 Web 应用程序在 Azure 环境中运行时可用(请参阅此文档)。

现在关于这个问题。在我新安装的计算机上,我从 Visual Studio 2019 中运行了我的 Web 应用程序,但它失败了:AuthenticationFailedException: ManagedIdentityCredential authentication failed: Retry failed after 4 次尝试。

使用 EnvironmentCredential 会导致与我的旧计算机相同的异常,这是预期的。此外,使用 SharedTokenCacheCredential 和 VisualStudioCredential 就像在我的旧计算机上一样。从错误描述来看,我认为,在我的新计算机上,Web 应用程序尝试使用 ManagedIdentityCredential 并失败。是什么导致了这个问题?

0 投票
1 回答
100 浏览

c# - 是否可以在 Microsoft.Identity.Web 中设置用于获取令牌的发现 URI?

我有一个 .NET5 应用程序,它利用 Microsoft.Identity.Web 作为安全 API。尝试检索访问令牌时:

发生的第一件事是它向发现端点发出请求:

我在我的配置中指定了一个静态权限,我认为应该使用它。对于我的 Blazor 应用程序,它工作得很好。MS.Identity.Web 首先在我的权限下获取我的关键信息:

然而,使用 tokenAcquisition,它总是调用 login.microsoft.com,失败,然后最终重定向到我的端点。

挖掘 MS.Identity.Web 和 MS.Identity.Client 代码,他们肯定想到了这一点。

请参阅此处:https ://github.com/AzureAD/microsoft-authentication-library-for-dotnet/blob/ac7541c1aa1c7bdbb20df5c7e72628161f826f44/src/client/Microsoft.Identity.Client/AppConfig/AbstractApplicationBuilder.cs#L51

在这里: https ://github.com/AzureAD/microsoft-authentication-library-for-dotnet/blob/ac7541c1aa1c7bdbb20df5c7e72628161f826f44/src/client/Microsoft.Identity.Client/AppConfig/ApplicationConfiguration.cs#L95

但我无法在 API 端找到它。当我查看 TokenAquisition 时,它正在调用 ConfidentialClientApplicationBuilder.CreateWithApplicationOptions

https://github.com/AzureAD/microsoft-identity-web/blob/b106d9a9250522d0bf9ed0e78e0e3dbd376d8170/src/Microsoft.Identity.Web/TokenAcquisition.cs#L583

然后创建一个带有空 ApplicationConfiguration 对象的新 ConfidentialClientApplicationBuilder ,因此 CustomInstanceDiscovery 始终为空

https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/blob/ac7541c1aa1c7bdbb20df5c7e72628161f826f44/src/client/Microsoft.Identity.Client/AppConfig/ConfidentialClientApplicationBuilder.cs#L42

所有的钩子似乎都在那里,所以我觉得我缺少一些配置,但它也可能是一个功能/错误请求。

0 投票
0 回答
71 浏览

asp.net-core - 使用 JwtBearerDefaults.AuthenticationScheme 时添加声明

AzureAD 正在执行身份验证。我想添加索赔。从表面上看,这将成为我需要的问题和答案:向 AspNetCore Azure Authenticated Application 添加自定义声明

但是,实现看起来像这样。

为什么要这样设置身份验证?我不知道。它似乎适用于我用来进行身份验证的帐户,这是一个 AzureAD 身份。

所以无论如何,我想为令牌添加一些声明,与引用的问题相同。我是否需要重写它才能像另一个问题一样工作,或者有什么方法可以添加声明,并按照目前的方式设置身份验证?

0 投票
2 回答
186 浏览

azure - 代表 api(不是用户)从另一个 WebAp 获取 401 Unauthorized call WebApi

我们代表用户调用 Azure 中的许多 ASPNET Core Web API。该用户通常已登录到同样在 Azure 中的 ASPNET 网站。

我们正在引入审计服务。感觉应该代表调用服务而不是经过身份验证的用户调用它。

  • 审计服务在 Azure AD 中有关联的应用注册
  • 审计服务有一个名为“access_as_application”的范围,虽然看过有关“.default”范围的文档,但我不确定我是否需要一个范围
  • 调用应用程序(ASPNET Core 网站)已添加到前面提到的范围的“授权客户端应用程序”部分

在调用应用程序中,我通过使用获取应用程序而不是用户的访问令牌 GetAccessTokenForAppAsync

目前我正在本地开发机器上运行调用应用程序和审计服务。

当我打电话给审计服务时,我收到了 401 Unauthorized

更新

我已通过 App Manifest 将调用应用程序的 Azure Ad App Id 添加为审计服务上的 knownClientApplication。这并没有阻止 401

更新 2

我可以看到在 Visual Studio 中运行的服务实例正在报告堆栈跟踪。它指的是 IDW10201 问题。

有什么想法为什么?

0 投票
1 回答
152 浏览

oauth - Azure AD Ms Identity 回调 URL(错误 AADSTS50011)

我正在使用 Angular 在 Web 应用程序上集成 Azure AD 和 MS-Identity。它可以在我的机器上运行,但是当我部署它时,我遇到了回调 URL 的问题。

首先,为了确保回调 URL 正常,我从 Microsoft 登录弹出窗口的 URL 中提取它:

登录窗口

然后,我对内容进行 url 解码。该 URL 看起来不错,并且在我的 Azure 应用程序的重定向 URL 中可用。

可用的网址

然后我正常登录 Microsoft 并收到此错误(AADSTS50011):

错误信息

然后我再次检查 URL(在 urldecoded 弹出窗口 URL 的查询字符串内),现在 URL 似乎已被“篡改”。现在是这样的: http://somedomain:80 /some_page/somequerystring 而不是 https ://somedomain/some_page/somequerystring 所以我想知道这是问题的一部分还是正常行为。

还提到“如果您联系管理员,请将此信息发送给他们”。我想我是“管理员”,那么我可以用“将信息复制到剪贴板”信息来调查问题吗?

0 投票
0 回答
70 浏览

azure - 在使用多个身份验证方案时防止 IDX10501 错误 (Microsoft.Identity.Web)

使用 Azure Active Directory 和 Azure B2C 保护的 ASPNET Core 3.1 Web API。

我们正在使用 Microsoft.Identity.Web (MSIW) 来配置我们的身份验证策略。该软件包从 1.10 版开始支持多种身份验证方案。

IDX10501 错误不是 MSIW 的错,虽然令人困惑,但它们并不是被调用端点“不工作”的迹象。AFAIK 的问题是,当使用多种方案时,与当前请求相关的方案以外的方案都失败了。这会填满 Azure 中的日志,这至少可以说是无济于事。

这个问题已经在这里讨论了一些解决方案在这里 Fixing-IDX10501-MultipleAuthScheme和更多在这里

我想要做的是将 Olivier 的解决方案集成到我们使用 MSIW 的代码中,但我不确定如何。