问题标签 [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.
c# - 通过 Azure 门户中的“身份验证”刀片与 Startup.cs 中的手动保护功能应用程序
我通过修改Startup.cs中的配置并在服务集合对象上调用 Microsoft.Identity.Web 的AddAuthentiction和AddMicrosoftIdentityWebApi扩展方法来保护我的 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 中是隐式而不是显式的。
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
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 但我不确定吗?
另外我不知道怎么配置呢?
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 为空'。”
顺便说一句,用户是正确创建的。
我需要做什么才能使用第二项政策?
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。我怎么做?
asp.net-core - 在 ASP.NET Core 授权中,如何检查同一控制器操作上的应用程序或用户访问令牌的权限?
Microsoft 身份平台上的 OAuth 实施使用范围来获得委派权限,使用角色来获得应用程序权限。我正在编写一个受保护的 Web API,它支持这两种类型的访问令牌。
对于范围验证,我可以使用[Authorize(Policy = "HasTheScope")]
以下策略定义应用于我的控制器操作:
对于角色验证,我可以应用[Authorize(Policy = "HasTheRole")]
以下策略定义:
对于多个[Authorize]
属性,必须满足所有属性,因此不可能简单地将两个策略应用于操作。
允许对应用程序请求(使用客户端凭据流创建的令牌)和代表用户的请求(使用授权代码流创建的令牌)访问我的控制器操作的最佳实践方法是什么?
azure-active-directory - 使用 OAuth2.0 和 AAD 登录的 Azure API 管理导致重复循环
我们有一个简单的 Web 应用程序,我正在尝试在它之上使用 Azure API 管理。现在,我正在将我们的 Web 应用程序产品的 CName 重定向到 apim url。
我们的 Web 应用程序是第一方应用程序,它从Microsoft.Identity.Web
nuget 包执行 AAD 身份验证并获取 access_token,如下所示:
现在,我将所有流量(GET /* 和 POST /*)从 CName 重定向到 apim url
没有 APIM 的使用,我们的网络调用(成功)看起来像这样: 没有 APIM
然而,在添加 APIM 层后,我们的网络调用看起来像这样: 使用 APIM
不知何故,/signin-oidc
请求将调用重定向到login.microsoftonline.com/..
而不是授权请求并重定向回'/'
调用者页面的根(路径:)。
我们得到重复循环:
我不确定重定向是否无法正常工作或身份验证是否无法正常工作。
任何线索都会有所帮助,
谢谢,
马尼沙
c# - 在启动时添加 MicrosoftIdentityWebApi 不适用于 Web 应用程序
我之所以添加这个问题,是因为我挣扎了一段时间才找到这个问题,并想在这里为任何因同一问题而烦恼的人添加参考。
在连接 Azure B2C 时,我试图让后端能够读取来自 Azure 的令牌中的声明。我验证了令牌是有效的,并且应该在 jwt.io 和示例应用程序的帮助下进行声明,并且我设置了我的应用程序以读取令牌,但是每次我的应用程序尝试读取 AuthorizationHandlerContext.User.Identity.Claims 中的声明时,它们总是空的。
进一步调查后,很明显在 Startup.cs 中我设置的身份验证从未被命中。
以下行被击中:
但实际设置选项的代码从未被击中。
如果您遇到类似的问题,请参阅下面的我的回答。
asp.net-core - 使用 Microsoft.Identity 清除令牌缓存时将用户带到登录屏幕
使用 Microsoft.Identity 对我们的 ASP.Net Core Web 应用程序中的用户进行身份验证。
在内部,身份平台连接到 Azure AD 以对用户进行身份验证,我们还使用 Microsoft.Graph 从 AD 获取用户数据。
目前我们正在使用AddInMemoryTokenCaches进行令牌缓存,并且正如预期的那样,当服务器重新启动时它会被清除。
使用 Graph 连接到 AD 需要一个令牌,并且在服务器重新启动时会因为缓存被清除而丢失。使用ITokenAcquisition的GetAccessTokenForUserAsync引发错误MsalUiRequiredException:没有帐户或登录提示已传递给 AcquireTokenSilent 调用。
这就是我配置身份和 MSGraph 的方式。
清除令牌缓存后,有什么方法可以将用户重定向到登录页面?
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 执行静默登录尝试吗?