问题标签 [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 投票
0 回答
82 浏览

azure - 监视 Azure 中的缓存内存

我们想在 Azure 中托管一个 ASP.NET Core 3.1 应用程序。我们正在考虑Microsoft.Identity.Web用于身份验证。在其中,有一个选项可以使用AddInMemoryTokenCaches(此处还有AddSessionTokenCaches更多AddDistributedTokenCaches 信息)来存储令牌。有人担心令牌可能会堆积在缓存中。

如果选择了缓存 ( AddInMemoryTokenCaches) 的第一个选项,是否有办法在 Azure(App Insights 或其他地方)中查看/监控正在使用的缓存量?

0 投票
1 回答
123 浏览

microsoft-graph-api - Microsoft.Identity.Web.MicrosoftGraph,AddMicrosoftGraph 未注入经过正确身份验证的 GraphServiceClient

我有一个 Blazor WASM 客户端应用程序正在尝试调用 aspnet web api。通过 Web API,我尝试使用具有委派权限的 Microsoft Graph SDK。

在服务器上,当我GraphServiceClient通过依赖注入检索实例时,尝试读取用户数据时出现以下错误。

但是,如果我使用 手动获取令牌ITokenAcquisition,则一切正常。

我的印象是注入的 GraphServiceClient 将使用 ITokenAcquisition 获取令牌并传递 Startup 中指定的范围。

我配置错了吗?似乎注入客户端中使用的令牌不包含正确的范围。

我已尝试完全退出我的 Microsoft 帐户,并删除浏览器缓存。我已同意所有必要的权限。

我的 api 服务器启动看起来像这样。

服务器 appsettings.json

客户端启动

客户端 appsettings.json

0 投票
1 回答
188 浏览

c# - 在 ASP.NET Core 6.0 中使用 Microsoft.Identity.Web 记录身份验证事件

我正在尝试解决如何配置发生的日志身份验证事件是 ASP.NET Core 6.0 中的 MicrosoftIdentityWeb,但我无法找到一个简单的示例。

我的代码目前是 .net60 模板代码,我尝试按照前面的示例添加日志记录,但无法使其正常工作:

如何绑定配置并订阅身份验证事件,以便了解身份验证失败的原因并出于安全目的记录身份验证尝试?

0 投票
1 回答
217 浏览

asp.net-core - Azure Active Directory 和 ASP.NET Core 的混合身份验证和单点登录

我正在开发现有的 ASP.NET Core 3.1 Web API。现有的认证方案是 JWT。有一项新要求是我们支持使用 Azure Active Directory 进行单点登录。

因此,我认为我要遵循的策略是使用 Microsoft 对用户进行身份验证,并且当我的 signin-oidc URL 回调被调用时,我将使用 Microsoft 的令牌来匹配我的应用程序的用户。然后,我将按照应用程序已经执行的方式生成现有的 JWT,以授权进一步的操作。因此,我想通过 Microsoft 进行身份验证,然后继续使用旧的授权方案。

而现在的问题。据我了解, signin-oidc URL 不是您自己定义的,而是隐藏在Microsoft.Identity.Web.

尽管如此,根据上面的描述,我得出结论,我必须定义它。那么,实施它的正确方法是什么?我在下面的实现有效,但有些东西告诉我我错过了一些对安全至关重要的东西。

谢谢你。

0 投票
0 回答
34 浏览

asp.net-core - 如何为单个应用程序在 ASP.NET Core 中使用 Microsoft 标识跳过或禁用保持登录 (KMSI) 流

我正在努力在 .NET 6 MVC Web 应用程序中实现 Microsoft Identity。由于应用程序中数据的敏感性,我需要保持非常短的身份验证票证寿命。因此,当用户在短时间不活动后导航回应用程序时,我需要经常强制重新进行身份验证。我已经能够通过在 OpenIdConnectOptions 中将 MaxAge 设置为 TimeSpan(0 on) 来强制执行此操作:

但是,由于用户需要经常重新登录,我想禁用在用户重新输入密码和 OTP(如果需要)后出现的 Keep Me Signed In (KMSI) 页面。有没有办法做到这一点,也许通过将参数传递给 OnRedirectToIdentityProvider 事件?

我知道有一个全局选项可以在租户中应用,但由于我们组织的规模,这是不可能的。我希望有一个特定的选项来为这个特定的应用程序设置它。

先感谢您。

0 投票
1 回答
64 浏览

azure - 从 ASP.NET Grpc 服务调用 Microsoft Graph 时出现问题

我有两个应用程序 -

  • 公共客户端应用程序(.NET Core 控制台应用程序),用户在其中获取 Microsoft 身份访问令牌
  • web API,它尝试使用该访问令牌代表用户调用 Microsoft Graph

当我从 Web API 调用 Microsoft Graph 时,我得到一个MicrosoftIdentityWebChallengeUserException,其内部异常状态为:“用户或管理员未同意使用 ID <...> 名为 <...> 的应用程序。发送交互式授权请求对于这个用户和资源。”

我试过了:

  • 使用在 Azure 门户中公开 API 选项卡对服务应用程序中的客户端应用程序进行预授权
  • 在 Manifest 选项卡的knownClientApplications数组中添加客户端应用程序 ID
  • 在用户获得的访问令牌中包含 Microsoft Graph 所需的范围(例如“User.Read”)

但似乎这不起作用,我仍然得到同样的例外。

问题是- 在调用 GRPC 服务之前,我是否可以通过在用户访问令牌中获取所有需要的权限来以某种方式避免这种异常情况,或者如果没有,我需要如何处理此异常以将其传播回用户。

0 投票
0 回答
139 浏览

c# - 如何在 ASP.NET Core 6 MVC 和 Azure AD Microsoft.Identity.Web 中使用刷新令牌?

我还需要编程什么才能让我的 Web 应用程序响应刷新令牌?

我通过 Powershell 访问 Azure-AD 并执行此命令

现在,由于我有 2 个 Web 应用程序和一个已经从第一个 Web 应用程序登录的用户调用了第二个 Web 应用程序,因此立即发现该用户必须使用密码再次登录。但是,如果我已经在第一个网络应用程序的页面上并且只是刷新页面,则不会发生任何事情。

这是我的源代码 Program.cs:

0 投票
1 回答
161 浏览

azure - Microsoft Identity Web:具有基于证书的身份验证的 Azure AD 客户端凭据流

我正在使用 Microsoft Identity Web (MSAL) 库连接到 Graph API。[https://github.com/AzureAD/microsoft-identity-web][1]

为此,我将客户端凭据流与基于证书的身份验证一起使用。

我的配置如下

服务注册

appSettings.json

为此,我收到以下错误

IDW10104:客户端密钥和客户端证书都不能为空或空格,并且在调用 Web API 时,Web 应用程序的配置中只能包含 ONE。例如,在 appsettings.json 文件中。

但是,我能够使用Microsoft.Identity.Client累积令牌并与 Graph API 连接(使用客户端凭据流和基于证书的身份验证)

我在这里缺少任何配置吗?

0 投票
0 回答
62 浏览

c# - Microsoft 身份平台和 ValidAudiences

我正在努力更新我们的 API(核心 3.1)身份验证,以使用最新的 Microsoft Identity nuget 与 MSAL 一起用于 Angular UI 应用程序。我们有 Azure 函数,它们将使用托管服务标识调用我们的 API,并为每个 API 设置了几个新的应用程序注册,以便在 Angular 中与 MSAL 一起使用。我们从 Azure 函数调用的相同 API 也将从 Angular UI 调用。我遇到的问题是我需要接受最多四个不同的受众,以免破坏所有内容的身份验证。

需要的观众:

  1. API 的客户端 ID
  2. https://management.azure.com/微星
  3. https://management.core.windows.net/微星
  4. 我们用于生成用于自动化测试的令牌的另一个应用程序注册的客户端 ID 我正在尝试在列表中设置受众,如下所示:

当我尝试使用另一个应用程序创建的令牌(#4)通过 Swagger 调用端点时,我收到此错误:

IDX10214:观众验证失败。观众:“System.String”。不匹配:validationParameters.ValidAudience: 'System.String' 或 validationParameters.ValidAudiences: 'System.String'。

在查看事件中的上下文时,我还注意到,当事件触发时,我在运行时设置的任何受众值都不存在。ValidAudience 和 ValidAudiences 都为空。

我需要弄清楚如何在事件中保留这些设置,因为我猜这就是观众验证失败的原因。

0 投票
1 回答
155 浏览

c# - 如何在 .AspNetCore.OpenIdConnect.Nonce 和 .AspNetCore.Correlation cookie 上设置安全?

我有一个 ASP.NET Core 6 MVC Razor pages 应用程序,它使用 Microsoft Identity 进行 AzureAD 集成身份验证,在 Azure Linux AppService 计划上运行(使用强制 HTTPS)。

身份验证集成就像一个魅力。再开心不过了。

但在我的日志中,我看到如下警告:

cookie '".AspNetCore.Correlation.[...]"' 已设置 'SameSite=None' 并且还必须设置 'Secure'。

(以及 .AspNetCore.OpenIdConnect.Nonce cookie)。

我尝试添加 cookie 策略:

但没有喜悦。

我尝试了位于“var app = builder.Build();”之后的代码 在“app.UseAuthentication(); app.UseAuthorization();”之后 (就在 app.MapRazorPages().RequireAuthorization("MyRoleId") 之前)。

关于如何将这些 cookie 设置为安全的任何想法?