我们正在尝试构建一个ASP.NET MVC 5 Web应用程序,其中有两种类型的用户可以登录。我们有一些客户使用Google应用程序而其他人使用Office 365.我们已经知道哪个客户端使用什么服务。< / p>
用户登录我们网站的方式如下:
根据他们使用的服务,我们还计划利用他们的api,如Calender,Notes等。
我搜索了很多,但在这方面没有发现/无关紧要。请帮忙。
答案 0 :(得分:3)
如果你想自己实现这个,这里有一些我的经验提示:
Office365(基于Windows Azure Active Directory):使用SAML令牌说出一个名为Ws-Federation的协议。到目前为止,有各种平台和语言的库。
Google Apps对Office365更容易,因为您必须使用普通的Google OAuth。可能对您有所帮助的一点是,您可以在使用querystring参数&#34; hd&#34;进行身份验证时强制使用Google Apps域。喜欢&#34;?hd = x.com&#34;。请参阅此answer and the comments。
你要做的事情并非不可能,但它需要一些工作并理解所有协议。
另一个选择是使用Auth0之类的身份验证代理。您的应用程序将auth0视为OAuth提供商,您可以从仪表板或API连接到客户 Google Apps 和 Office 365 ,这意味着您可以轻松地自动执行以下操作 - 寄宿客户。创建连接后,Auth0将为您提供您需要提供给客户的链接,以便他们可以同意您的应用程序使用其目录。从客户端的角度来看,您可以使用auth0.js实现您描述的组合框UI,如下所示:
var auth0 = new Auth0({
//settings provide by auth0
});
var combo = $('#company-combo');
//loads the company combobox directly from auth0
auth0.getConnections(function (err, connections) {
connections.forEach(function (c) {
$('<option>')
.attr('value', c.name)
.text(c.name)
.appendTo(combo);
})
});
//trigger login
$('.login').on('click', function (e) {
auth0.login({
connection: $("option:selected", combo).val()
})
});
用户登录后,您的应用程序将获得profile。此配置文件具有指示连接/公司的属性。
Auth0还为查询/搜索用户提供了统一的API,在这两种情况下,它使用基础目录,但您再次获得相同的配置文件表示。
免责声明:我为Auth0工作。
答案 1 :(得分:0)
您可以将Windows Azure Active Directory ACS用作代理。来自MSDN:Windows Azure Active Directory访问控制(也称为访问控制服务或ACS)是一种基于云的服务,提供了一种简单的方法来验证和授权用户访问您的Web应用程序和服务,同时允许身份验证功能和授权从您的代码中分解出来。您可以让ACS协调身份验证以及用户的大部分授权,而不是使用特定于您的应用程序的用户帐户来实现身份验证系统。 ACS集成了基于标准的身份提供商,包括企业目录(如Active Directory)和Web身份(如Windows Live ID(Microsoft帐户),Google,Yahoo!和Facebook)。
此blog提供了有关如何设置ACS的详细信息。
这个article解释了如何在ASP.NET MVC中使用ACS。