1

我们正在尝试构建一个ASP.NET MVC 5 Web应用程序,其中有两种类型的用户可以登录。我们有一些客户使用Google应用程序,其他客户使用Office 365.在此我们已经知道哪个客户端使用哪种服务。如何将asp.net mvc5一起实现Office 365 sso和谷歌应用程序sso?

用户登录我们的网站应该是如下的方式:

  1. 用户看到其中用户从下拉列表中选择他们的公司名称的页面。
  2. 根据用户选择的公司名称,他/她应该被重定向到特定的SSO登录页面。
  3. 认证后,用户应返回到我们的网站,并被视为认证。

根据他们所使用的服务,我们还计划利用其API,像日历,记事本等

我搜索了很多,但没有发现什么/在这方面无关。请帮忙。

回答

3

如果要实现这个你自己的,下面是我的一些经验技巧:

  • Office365(这是基于Windows Azure的活动目录):讲一个名为WS联合与SAML协议令牌。到目前为止,有各种平台和语言的图书馆。

  • 谷歌企业应用套件,更容易Office365因为你必须使用纯谷歌的OAuth。有一件事可以帮助您,您可以在使用像“?hd = x.com”这样的querystring参数“hd”进行身份验证时强制Google Apps域。请参阅answer and the comments

你在做什么并不是不可能,但它需要一些工作和理解所有的协议。

另一种选择是使用身份验证代理,如Auth0。你的应用程序看到auth0为OAuth提供者,你可以连接到你的客户谷歌企业应用套件办公室365从仪表板或这意味着你可以轻松地自动入职的客户的API。创建连接后,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工作。

0

您可以使用Windows Azure Active Directory ACS作为代理。从MSDN开始:Windows Azure Active Directory访问控制(也称为访问控制服务或ACS)是一种基于云的服务,它提供了一种简单的方式来验证和授权用户访问您的Web应用程序和服务,同时允许身份验证功能并将授权从您的代码中分解出来。您可以让ACS协调用户的身份验证和大部分授权,而不是使用特定于您的应用程序的用户帐户来实现身份验证系统。 ACS与基于标准的身份提供商(包括Active Directory等企业目录)以及Windows Live ID(Microsoft帐户),Google,Yahoo!和Facebook等Web身份相集成。

blog提供了有关如何设置ACS的详细步骤。

这个article解释了如何在ASP.NET MVC中使用ACS。

+0

我们最近为我们的组织设置了Windows Azure。我会尝试这个SSO。谢谢。 – Rishi