Authentication 在客户端OWIN Web应用程序中实现Azure Active Directory身份验证

Authentication 在客户端OWIN Web应用程序中实现Azure Active Directory身份验证,authentication,nancy,owin,azure-active-directory,katana,Authentication,Nancy,Owin,Azure Active Directory,Katana,您好,我已经阅读并实施了以下Vittorio Bertocci教程: 但是,与教程不同,我的web应用程序由以下OWIN组件组成:NancyFx和ASP.NET web API(遵循所述的体系结构模式),因为我尝试在NancyFx模块中实现AAD身份验证(正如Bertocci先生在其教程中所做的那样)(对点击需要身份验证的路由的用户进行身份验证): 我得到以下错误 其他信息:加载交互式用户身份验证所需的程序集失败。确保程序集“Microsoft.IdentityModel.Clients.A

您好,我已经阅读并实施了以下Vittorio Bertocci教程:

但是,与教程不同,我的web应用程序由以下OWIN组件组成:NancyFx和ASP.NET web API(遵循所述的体系结构模式),因为我尝试在NancyFx模块中实现AAD身份验证(正如Bertocci先生在其教程中所做的那样)(对点击需要身份验证的路由的用户进行身份验证):

我得到以下错误

其他信息:加载交互式用户身份验证所需的程序集失败。确保程序集“Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms,版本=2.0.0.0,区域性=中性,PublicKeyToken=31bf3856ad364e35”存在

很明显,弹出的请求用户登录的AAD对话框依赖于WindowsForms,不应该从web应用程序调用

我应该使用哪种AAD凭证提示?
如何在web应用程序客户端中实现AAD auth?

我对您尝试实现的场景的理解是,您有以下参与者:

浏览器->Web应用程序->Web API

其中,浏览器向Web应用程序验证用户,然后Web应用程序尝试获取令牌,该令牌将允许其代表用户访问Web API上的资源

在这种情况下,Web应用程序需要将浏览器重定向到AAD OAuth 2.0授权端点。在那里,用户将输入他们的凭据,并使用授权代码重定向回Web应用程序。然后,您可以使用该授权代码通过获取令牌。具体来说,您将使用AuthenticationContext.AcquireTokenByAuthorizationCode方法。Vittorio在下面的博客文章中详细介绍了在Web应用程序中实现令牌所需的代码。它不是OWIN特定的实现,但应该很容易转化为您的NancyFx应用程序

您不必更改根据实现的ASP.NET Web API

博客条目中客户端应用示例中使用的AuthenticationContext.AcquireToken版本适用于不涉及浏览器的不同场景。相反,用户与桌面应用程序交互,然后桌面应用程序代表用户调用Web API。在这种情况下,AcquireToken调用必须显示基于浏览器的对话框,以便允许用户登录并获取适当的令牌