在ASP.NET MVC项目的脚手架中,StartUp.Auth.cs文件当前包含以下代码:
public partial class Startup
{
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login")
});
// Use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Uncomment the following lines to enable logging in with third party login providers
app.UseMicrosoftAccountAuthentication(
clientId: "0000000000000000",
clientSecret: "xxxx-xxxxxxxxxxxxxxxxxxx-xxxxxxx");
//app.UseTwitterAuthentication(
// consumerKey: "",
// consumerSecret: "");
//app.UseFacebookAuthentication(
// appId: "",
// appSecret: "");
//app.UseGoogleAuthentication();
}
}
取消注释app.UseXxxAuthentication()
行并添加提供商的密钥和密码,您可以使用相应的提供商执行OAuth登录。在幕后,这些方法使用从Owin类AuthenticationMiddleware
派生的类。
我在网上看过,但找不到直接链接到Windows Azure Active Directory实例的AuthenticationMiddleware
自定义实现。有没有这样的实现?
这是使用OAuth连接到我的Windows Azure Active Directory实例的正确方法吗?
答案 0 :(得分:8)
您应该可以转到您的软件包管理器,NuGet导入Windows Azure AD的Katana Owin实现,它将被列为Microsoft.Owin.Security.ActiveDirectory这是使应用程序能够使用Microsoft技术的中间件用于身份验证截至本文的当前版本为2.0.2
一旦你有了这个,你应该能够利用AD和2.1版oAuth令牌的中间件,如下所示:
WindowsAzureActiveDirectoryBearerAuthenticationOptions myoptions = new WindowsAzureActiveDirectoryBearerAuthenticationOptions();
myoptions.Audience = "https://login.windows.net/myendpoint";
myoptions.Tenant = "mydirectory.onmicrosoft.com";
myoptions.AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive;
app.UseWindowsAzureActiveDirectoryBearerAuthentication(myoptions);
这应该使您能够让Owin中间件在此方案中使用Windows Azure AD承载身份验证。
快乐的编码!
答案 1 :(得分:2)
我认为你不能以这种方式使用WAAD。 Microsoft Account
用于Windows Live ID
(更多信息here),这与WAAD不同。 WAAD中的OAuth实现尚未完成且处于预览状态(more details here)。今天使用WAAD的最佳方法是通过WS-Federation / WIF。
VS 2013中的难点在于您无法手动轻松完成,也无法在创建项目后更改所选的身份验证。
获得所需配置的最简单方法是去创建新的Web应用程序,并更改身份验证。在向导的第一步选择Change Authentication
(在这里选择应用程序的类型 - MVC,WebAPI等)。然后选择Organizational Account
。它只有一个选项 - Cloud single organization
- 输入您的租户域名(可能是xxxx.onmicrosoft.com
)。并选择了访问级别(Single Sign On
,SSO + read directory data
,SSO + read + write directory data
)。接下来,系统将要求您使用此Active Directory中的全局管理员帐户登录。该向导将创建必要的web.confg更改和Identity配置。
在OWIN中仍然不支持WAAD,它将创建一个新的IdentityConfig.cs而不是Startup.Auth.cs文件。然后,您可以将生成的文件和web.config更改复制到项目中。您仍然可以将WAAD与其他提供商和OWIN结合使用,但这仍然需要更高级的技能。
应该是这样复杂一点。但事情可能会在未来发生变化。
答案 2 :(得分:2)
有一个新的Owin中间件,它使用一些简单的代码行向您的站点添加Ws Federation身份验证,就像新MVC项目模板中的个别帐户示例一样。它目前处于alpha状态,但这里有一篇文章link,解释了如何在Windows Azure Active Directory中创建应用并配置OWIN中间件。
然而,这使用cookie身份验证而不是OAuth令牌,但这对于纯ASP MVC站点来说应该足够了。