问题标签 [microsoft-identity-platform]

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 回答
1318 浏览

asp.net-core - 自定义 Azure AD 注销页面

我在我的 ASP.NET Core 应用程序中使用 Azure AD 登录。退出链接是<a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">,退出成功后它会将我重定向到MicrosoftIdentity/Account/SignedOut. 我怎样才能让它重定向到另一个页面?

0 投票
1 回答
1134 浏览

azure-active-directory - .NET Core 3.1 到 .NET 5 的迁移 - Microsoft Identity Web Platform 停止工作

随着 NET 5 的正式发布,今晚我从 Net Core 3.1 迁移到 NET 5,一切似乎都很顺利,直到我尝试运行该应用程序,现在在 startup.cs 中的两个项目下发现了几条波浪线与 Microsoft Identity Web 平台相关联。这显然是一时的失败!在修复此问题之前,我将无法启动应用程序或登录 Azure AD。

将csproj文件修改为NET5后,我去nuget manager更新了所有的包。

我完全不知道从哪里开始处理这个问题:(

带有波浪线的 startup.cs 文件的屏幕截图:

启动.cs 文件

csproj 文件:

在此处输入图像描述

带有更新包的 Nuget 管理器:

在此处输入图像描述

我注意到,自迁移以来,MS Identity Web 的 startup.cs 文件顶部的包引用现在显示为灰色:

在此处输入图像描述

startup.cs 文件中的代码:

我只是不知道如何解决这个问题......

0 投票
0 回答
155 浏览

c# - HttpActionContext 未设置 AzureAD 身份验证后的声明

我有一个使用 ASP.NET (.NET Framework 4.8) 和 ASP.NET WEB API 2、SQL SERVER 2016 开发的 Web 应用程序。我正在使用带有 OpenIDConnect(授权代码流)的 Azure AD。

在此实现中,有一个容器 Web 应用程序 (ASP.NET),它托管 anguarjs (frontend) 、 web.config 以及相关的 bin 和 Global.asx 文件。除此之外,它也是包含所有 API 的 API 项目的占位符。API 项目有自己独立的 web.config 文件,并且这个 API 项目仅由前端 Web 应用程序使用。此 Web 应用使用 Azure AD (OIDC) 授权代码流进行身份验证,并具有自己的自定义授权。

这是整个身份验证流程:

在此处输入图像描述

testapp 托管为单个站点,API 项目托管为使用 IIS 10 的同一站点内的应用程序,如下所示:

在此处输入图像描述

API 项目使用与此实现中的 testapp 相同的应用程序池。

Azure AD 中有一个注册(整个 testpp 和 API)。Azure AD 中没有针对此实现的 API 项目单独注册。

现在导航到 URL:https ://testapp.com我被重定向到 Azure AD 登录页面,然后提供我的详细信息和登录,然后可以看到设置的 cookie 和 id_token 包括声明,但是当有一个调用到 API 在这种情况下,我看到未设置上下文对象,并且我看到没有维护任何声明。我在 API 项目级别有单独的身份验证和授权过滤器,只要 angularjs 前端应用程序对 webapis 进行任何调用,就会触发该过滤器。我还看到另一个问题,例如如果我直接在浏览器中导航到 URL:https//testapp.com/services/api/test/method,我没有触发 Azure AD 登录流程。

这是身份验证和授权过滤器:

TestAuthenticationAttribute.cs:

TestAuthorizationAttribute.cs:

在上面的调试中,我看到 HttpActionContext actionContext 没有设置任何声明,因此没有设置主体对象,最后我看到未经授权的响应。

如果我尝试访问任何其他 URL,例如https://testapp.com/test/app.js,那么我可以看到 Azure AD 登录流程被触发。总的来说,我可以看到对 API 项目的调用因 HTTP 状态代码而失败:401(未授权)。

在 ADFS 实施的情况下,对 API 的调用看起来不错。我正在将身份验证模块从 ADFS 迁移到 Azure AD,我看到了问题。

任何人都可以在这里帮助我如何解决这个问题。

0 投票
0 回答
50 浏览

c# - 如果 API 调用作为同一 IIS 站点中的应用程序托管,则 Cookie 会被排除在外

有一个带有角度前端和 asp.net web api2 后端的 asp.net webapp。这里是 URL 详细信息:

带有 OpenIDConnect(授权代码流)的 Azure AD https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-asp-webapp已用于实现身份验证。

由于在这种情况下,Web 应用程序和 Web api 都被视为单个应用程序,因此在 Azure AD 中只有一个使用重定向 URI 完成的注册:https ://www.testapp.com

是否有可能作为重定向 URI 的 Azure AD 登录流的一部分生成的 cookie:https : //www.testapp.com 每当有对 Web api 的调用时被排除:https ://www.testapp.com/服务/api

当我使用浏览器导航到 URL:https ://www.testapp.com时,会触发 Azure AD 登录流程,但现在如果我尝试导航到 URL:https ://www.testapp.com/services /api/test/method我没有看到 Azure AD 登录流程被触发。

任何人都可以在这里帮助我如何解决这个问题。

0 投票
0 回答
107 浏览

c# - Microsoft Identity returnURL 不适用于直接链接

我正在尝试使用 .NET 5 托管的 Blazor 模板通过 Microsoft.Identity.Web 和 Azure AD(单租户)设置身份验证。该模板似乎正在运行,我能够向我的租户进行身份验证并访问受限页面。

但是,如果我使用指向需要授权的页面的直接链接,returnURL 似乎不起作用。

模板中的示例

我去 https://localhost:5001/ 这是不受限制的主页。我按下页面 https://localhost:5001/fetchdata 上的 Fetch data 链接。Microsoft 登录屏幕出现在弹出窗口中,我登录并自动返回 https://localhost:5001/fetchdata

相反,我直接打开浏览器并转到 https://localhost:5001/fetchdata。我直接在页面中而不是弹出窗口中获得 Microsoft 登录屏幕,当我通过身份验证后,我被发送到主页 https://localhost:5001/。

这是预期的行为吗?这似乎意味着我无法提供指向受限页面的直接链接。

0 投票
0 回答
527 浏览

azure - 通过 Microsoft 身份平台和 ASP.NET Core 访问令牌超时

在下面的代码中,默认情况下通过 Azure AD 和 Microsoft 身份平台访问令牌超时的长度是多少,来自下面的链接?

https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2/blob/master/5-WebApp-AuthZ/5-2-Groups/Startup.cs

我想下面的链接有答案。任何人都可以确认这一点并提供理想的答案吗?

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-configurable-token-lifetimes https://docs.microsoft.com/en-us/azure/active-directory /develop/configure-token-lifetimes

问题

1 Azure AD 的默认访问令牌超时是什么?

2 如果可能,如何设置?

0 投票
0 回答
52 浏览

c# - 带有 Microsoft 身份平台的 ASP .NET MVC 应用程序中的 NLog 显示 auth:Cookies: 在用户名字段中

我们在 ASP .NET MVC Web 应用程序 .NET Framework 4.7.2 中使用 NLog。应用程序使用 Microsoft 身份平台进行用户身份验证。

我们使用 ${identity} 将 NLog 映射到数据库表(Web.config 的一部分在文中)。

但是 ${identity} 包含 auth:Cookies: 而不是真实的用户名。

如何将其修复为真实用户名?

0 投票
0 回答
336 浏览

c# - 如果启用了 2FA,如何使用 AzureAD 进行集成测试

我正在尝试在项目中设置集成测试,其中应用程序由 AzureAd (Microsoft.Identity.Web) 和 2FA 保护。通常,用户会使用 SPA 登录到应用程序,并且会受到登录弹出窗口或重定向的欢迎。在测试控制器端点时,没有 SPA,我们也没有使用代表流程,所以我想我可以简单地以通常的方式获取一个令牌来进行测试:

但是,由于启用了 2FA,我收到以下错误:

更易于阅读的版本:https ://login.microsoftonline.com/error?code=50158

这是身份验证配置的相关部分:

有没有办法在测试期间满足或规避 2FA 要求,同时保持基本令牌机制完好无损?

更新 以消除任何可能的混淆:我的目标是自动化测试,无需人工干预。我知道,我可以使用带有 custom 的模拟身份验证方案WebApplicationFactory,但如果可能的话,我会采用一种不那么假的方法。

0 投票
1 回答
1795 浏览

c# - 使用 MSAL 获取索赔

我正在使用Microsoft.Identity.Claim库来连接天蓝色并验证用户。我的第一个想法是使用AcquireTokenByIntegratedWindowsAuth方法,但这需要几天时间,直到网络管理员人员调查如何启用单点登录选项并更改该用户现在是“联合”而不是“管理”。所以我现在切换到AcquireTokenInteractive方法,因为很有可能会登录,所以他只需要从自动打开的浏览器中选择帐户即可。没什么大不了的。

这有效:

但是,我没有收到令牌内的索赔。我的想法是将此令牌发送到服务器,然后对其进行验证,如果成功在数据库中创建用户,然后使用我自己的身份验证机制用于其他用户(不是域的一部分,完全独立的用户)。但我不希望域中的所有用户都可以访问这个应用程序。所以我想得到索赔,角色......

如何获得索赔,使用这个或任何其他给定用户电子邮件的库,或其他一些独特的数据?

0 投票
1 回答
142 浏览

c# - 集成 Microsoft Identity MSAL 后 azurewebsites.net webapp 上出现未经授权的 401 错误。本地主机工作

我在 localhost 上的 c# webapp 可以正常工作。

但是,发布到 Azure 后,该网站不显示任何内容,并返回 401 未经授权的错误。

在 azure 门户中查看应用程序的应用程序事件日志,我看到以下错误。

以下指的是startup.cs中的AddAuthetication服务

鉴于 azure hosts 和 localhost 的两种不同结果,我不确定如何解决此错误。