1

我已经使用“Microsoft.AspNetCore.Authentication。*”软件包的服务为我的asp.net核心项目配置了Azure AD身份验证。该项目预计将作为Web应用程序部署到Azure应用程序服务。用于Asp.Net核心的Azure AD身份验证

虽然我启用了Azure AD身份验证,但我还看到有一个选项可通过Azure门户上的应用程序设置在Web应用程序级别启用相同的选项。

enter image description here

我身边有哪些选项建议的问题。我确实看到,当我不利用通过nuGet包配置的Azure AD身份验证时,我没有将OpenId连接服务插入到StartUp.cs文件中。我认为这些服务在填充像User.Identity.Name这样的认证属性中很关键。另一方面,只有启用了门户的身份验证,我没有看到这个信息填充。因此,我认为如果我想用登录的用户身份进行进一步的工作,比如利用当前的声明信息进行授权,那么使用仅限于门户网站的身份验证将无法实现这一目标。

+0

我相信“仅门户”是OAuth。 OAuth将像第三方登录提供程序一样处理,因此您需要在应用程序中使用实际用户对象来将该登录与之关联。 OAuth中的用户信息来自声明。您基本上会使用用户声明来创建/查找适当的用户对象,然后签署该用户,就像使用Twitter,Facebook等一样。 –

+0

谢谢Chris!听起来像我应该仍然能够基于收到的声明创建一个用户对象。我在两种情况下都通过提琴手检查了答案,并且可以看到相同的结果集。这表明我通过nuGet软件包添加的框架服务正在简化这项任务,并负责生成用户对象。如果我想要与启用了门户的身份验证一样,我将不得不设置必要的对象。 –

+0

我没有'与Azure AD一起工作,但基于我对OpenID的了解,不同之处在于用户对象完全是OpenID外部的。它的功能与SSO类似,网站只是信任来自认证源的数据。 OAuth是一个不同的野兽。它更多的是认证因素。 –

回答

1

您的评估基本正确。启用了门户的身份验证完全在您的应用程序之外运行,并且在使用.NET Core时(该级别的集成仅适用于ASP.NET 4.x)无法设置User.Identity.Name

我的建议是使用ASP.NET Core NuGet包,以便您可以获得完整的集成。设置起来还有很多工作要做,但一旦你开始工作,你应该保持良好的状态,并获得你想要的完整的端到端体验。

如果您有兴趣使用支持门户的Azure AD身份验证支持,请查看this StackOverflow question以了解如何使其与User.Identity.Name配合使用。

+0

谢谢克里斯!我已经有了一个集成的代码,但我想知道两者之间的区别。 –