问题标签 [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 回答
81 浏览

c# - 通过 Azure 门户中的“身份验证”刀片与 Startup.cs 中的手动保护功能应用程序

我通过修改Startup.cs中的配置并在服务集合对象上调用 Microsoft.Identity.Web 的AddAuthentictionAddMicrosoftIdentityWebApi扩展方法来保护我的 ASP.NET Core Azure Function App(类似于Tests目录中AzureFunctions示例中使用的方法Microsoft.Identity.Web 的 GitHub 存储库)。这使我可以使用 Microsoft 身份平台从我的 Blazor 服务器应用程序安全地调用 Azure 函数 API。Azure Functions API 不调用任何下游 api。

这种方法工作得很好,无需启用功能应用程序下的身份验证选项-在 Azure 门户中设置并在此处指定身份提供程序并将其链接到 Azure AD 应用程序注册。

与 Startup.cs 中的手动配置相比,有人知道在 Azure 门户中的 Function App 设置下启用身份验证和添加身份提供程序有什么作用吗?如果我理解正确,它会做同样的事情,但在 Startup.cs 中是隐式而不是显式的。

0 投票
0 回答
74 浏览

asp.net-core - Microsoft.Web.Identity nuget >=1.9.2 使用 401 响应中断 AppService/Azure AD 登录

使用托管在 Azure 应用服务(由 linux 应用服务计划支持)上的普通 vanilla(来自 VS2019 的开箱即用示例 asp.net 5 MVC Web 应用)进行测试。除了添加 [Authorize] 标记以针对来自默认控制器的单个视图进行测试外,没有任何更改或添加。

Azure 中的默认应用服务,在 Azure AD 中具有默认应用注册。

我注意到 Microsoft.Web.Identity >=1.9.2 的每个版本在应用服务中运行时都会中断(但在本地运行良好)。尝试访问受保护的视图时,它将返回 401。降级到 1.9.1 会将我重定向到登录页面。我缺少一些其他配置吗?

我的 appsettings 配置

我的启动.cs

0 投票
1 回答
409 浏览

authentication - 企业代理背后的 asp.net core 3.1 azure ad SSO 身份验证

我正在尝试运行在 RHEL 7 上托管的 debian 10 容器上运行的 asp.net core 3.1 mvc Web 应用程序。该应用程序正在通过 Azure Ad OIDC SSO 进行身份验证。该应用程序必须通过公司代理连接到 Azure AD。我正在尝试在 asp.net 核心中设置代理,以便只有身份验证流量通过代理。我的启动文件如下所示:

我已经看到使用 OpenIDConnect 存在其他线程:使用 .Net Core 3.00 从企业代理后面使用 Azure AD 进行身份验证 但是从那时起,Microsoft 已经引入并推荐 Microsoft.Identity.Web 用于我正在使用的 Azure AD OIDC 身份验证。我发现另一位同事使用了成功的以下设置(在 .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd")); 之后开始):

他还使用了以下代码,这不适用于我,因为我没有设置 JwtTokens:

我知道“BackchannelHttpHandler”是处理来自 Azure AD 的元数据。我已经搜索了为我的用例设置 BackchannelHttpHandler 的方法,但找不到任何方法。

在我看来,设置 BackchannelHttpHandler 是我唯一缺少的 atm 但我不确定吗?

另外我不知道怎么配置呢?

0 投票
0 回答
66 浏览

asp.net-core - Azure AD B2C + Microsoft Identity Web with .net 5 core web app:如何添加显式注册链接?

我可以通过

用户被定向到 appsettings.json 中配置的用户流。

所以这是按预期工作的。

但是,我确实需要明确的登录和注册——因为我确实使用了标准的用户流程。

我检查了 GitHub 上的控制器源,我正在尝试以下操作:

这似乎工作正常: OnTokenValideted 被调用并且所有配置的声明都存在。

但随后出现异常并显示错误页面。报告的错误是:

" 消息包含错误:'invalid_grant',error_description:'AADB2C90088:尚未为此端点发出提供的授权。实际值:B2C_1_susi 和预期值:B2C_1_signup 相关 ID:4ac75b96-786e-4fb0-adf5-deafd2e5fa21 时间戳:2021- 06-23 20:35:04Z', error_uri: 'error_uri 为空'。”

顺便说一句,用户是正确创建的。

我需要做什么才能使用第二项政策?

0 投票
0 回答
138 浏览

asp.net-core - Web 应用程序使用 Microsoft.Identity.Web 调用具有不同 ClientIds 的多个 API

我正在编写一个需要调用两个 API(OrderApi 和 ProductApi)的 Web 应用程序。我需要在调用每个 Api 时传递不记名令牌。客户端 id (AAD Id) 是不同的,用于为每个 Api 生成不记名令牌。我发现很难为这两个不同的客户端 ID 配置身份验证。

应用设置.json

代码配置:

上述身份验证是指来自 appsettings 的“AzureAd1”,它将用于为 Order Api 生成不记名令牌。如何添加身份验证以读取“AzureAd2”设置并为 Prodcut Api 生成令牌?

调用 Web Api1:

网络 API2:

上面的 OrderService 和 ProdcutService 代码使用“AzureAd1”设置生成不记名令牌。我希望 OrderService 应该使用“AzureAd1”和 ProdcutService 使用“AzureAd2”生成不记名令牌。tokenAquisition 应该为相应的设置(clientid 和 secret)生成不记名令牌并调用 api。我怎么做?

0 投票
1 回答
38 浏览

asp.net-core - 在 ASP.NET Core 授权中,如何检查同一控制器操作上的应用程序或用户访问令牌的权限?

Microsoft 身份平台上的 OAuth 实施使用范围来获得委派权限,使用角色来获得应用程序权限。我正在编写一个受保护的 Web API,它支持这两种类型的访问令牌。

对于范围验证,我可以使用[Authorize(Policy = "HasTheScope")]以下策略定义应用于我的控制器操作:

对于角色验证,我可以应用[Authorize(Policy = "HasTheRole")]以下策略定义:

对于多个[Authorize]属性,必须满足所有属性,因此不可能简单地将两个策略应用于操作。

允许对应用程序请求(使用客户端凭据流创建的令牌)和代表用户的请求(使用授权代码流创建的令牌)访问我的控制器操作的最佳实践方法是什么?

0 投票
2 回答
111 浏览

azure-active-directory - 使用 OAuth2.0 和 AAD 登录的 Azure API 管理导致重复循环

我们有一个简单的 Web 应用程序,我正在尝试在它之上使用 Azure API 管理。现在,我正在将我们的 Web 应用程序产品的 CName 重定向到 apim url。

我们的 Web 应用程序是第一方应用程序,它从Microsoft.Identity.Webnuget 包执行 AAD 身份验证并获取 access_token,如下所示:

现在,我将所有流量(GET /* 和 POST /*)从 CName 重定向到 apim url

没有 APIM 的使用,我们的网络调用(成功)看起来像这样: 没有 APIM

然而,在添加 APIM 层后,我们的网络调用看起来像这样: 使用 APIM

不知何故,/signin-oidc请求将调用重定向到login.microsoftonline.com/..而不是授权请求并重定向回'/'调用者页面的根(路径:)。

我们得到重复循环:

我不确定重定向是否无法正常工作或身份验证是否无法正常工作。

任何线索都会有所帮助,

谢谢,

马尼沙

0 投票
1 回答
18 浏览

c# - 在启动时添加 MicrosoftIdentityWebApi 不适用于 Web 应用程序

我之所以添加这个问题,是因为我挣扎了一段时间才找到这个问题,并想在这里为任何因同一问题而烦恼的人添加参考。

在连接 Azure B2C 时,我试图让后端能够读取来自 Azure 的令牌中的声明。我验证了令牌是有效的,并且应该在 jwt.io 和示例应用程序的帮助下进行声明,并且我设置了我的应用程序以读取令牌,但是每次我的应用程序尝试读取 AuthorizationHandlerContext.User.Identity.Claims 中的声明时,它们总是空的。

进一步调查后,很明显在 Startup.cs 中我设置的身份验证从未被命中。

以下行被击中:

但实际设置选项的代码从未被击中。

如果您遇到类似的问题,请参阅下面的我的回答。

0 投票
0 回答
24 浏览

asp.net-core - 使用 Microsoft.Identity 清除令牌缓存时将用户带到登录屏幕

使用 Microsoft.Identity 对我们的 ASP.Net Core Web 应用程序中的用户进行身份验证。

在内部,身份平台连接到 Azure AD 以对用户进行身份验证,我们还使用 Microsoft.Graph 从 AD 获取用户数据。

目前我们正在使用AddInMemoryTokenCaches进行令牌缓存,并且正如预期的那样,当服务器重新启动时它会被清除。

使用 Graph 连接到 AD 需要一个令牌,并且在服务器重新启动时会因为缓存被清除而丢失。使用ITokenAcquisitionGetAccessTokenForUserAsync引发错误MsalUiRequiredException:没有帐户或登录提示已传递给 AcquireTokenSilent 调用。

这就是我配置身份和 MSGraph 的方式。

清除令牌缓存后,有什么方法可以将用户重定向到登录页面?

0 投票
0 回答
98 浏览

asp.net-core - 使用 Microsoft.Identity.Web 的 SSO 静默身份验证

我有一个 .net 核心 Web 应用程序,它使用 Microsoft.Identity.Web 对 Azure AD B2C 租户进行身份验证。

我希望应用程序在加载时执行静默登录检查,以便已经登录租户的用户自动登录。

直接在浏览器中使用 MSAL.js 时,这似乎很容易做到,但我正在努力寻找一种仅使用 Microsoft.Identity.Web 来实现此目的的方法。

看起来这可以使用 TokenAcquisition 类在页面加载时静默尝试获取访问令牌。但是,这需要配置一个秘密,这对我的应用程序来说不是必需的,因为只需要登录,而不需要 API 访问。

有人知道如何仅使用 Microsoft.Identity.Web 执行静默登录尝试吗?