我有一个Web表单应用程序,我开发用于测试身份验证/授权方案。在创建测试项目时,我选择了#34; No Authentication"这使我的项目没有认证机制代码。我将该网站发布到我的Azure租户,并通过"身份验证/授权"启用了Azure Active Directory身份验证。功能下。我创建了一个指向我的Web应用程序的Azure AD应用程序。点击默认页面后,应用程序现在进行身份验证,一切似乎都正常。
但是,当我在Visual Studio中本地运行应用程序时,我无法获取用户信息,因为没有适当的标头可用,例如X-MS-CLIENT-PRINCIPAL-NAME。我的下一步是调用图API来获取详细的用户信息。
注意:我能够在我的网络项目中包含OWIN代码以对用户进行身份验证,但我希望对现有的本地Windows身份验证应用程序进行最少的代码更改。
任何帮助/指导
答案 0 :(得分:2)
但是,当我在Visual Studio中本地运行应用程序时,我无法获取用户信息,因为没有适当的标头可用,例如X-MS-CLIENT-PRINCIPAL-NAME。我的下一步是调用图API来获取详细的用户信息。
这是预期的。 X-MS-CLIENT-PRINCIPAL-NAME标头(和相关标头)由在app服务中运行的Authentication / Authorization模块添加。当您从Visual Studio本地运行时,您不会拥有此模块,因此不会拥有此请求标头。
如果你想在本地和App Service中使用相同的代码,而不是查看请求标题,我建议使用.NET API来显示用户信息,例如 ClaimsPrincipal.Current.Identity.Name 即可。无论您是在本地使用Windows身份验证还是在Azure App Service中使用身份验证/授权,都应正确填充此内容。
您可以在此处找到有关身份验证/授权的基础机制的更多信息:https://cgillum.tech/2016/02/01/architecture-of-azure-app-service-authentication-authorization/。