具有多个 Azure Web 应用程序的 SSO

Posted

技术标签:

【中文标题】具有多个 Azure Web 应用程序的 SSO【英文标题】:SSO with multiple azure web apps 【发布时间】:2018-11-01 16:19:32 【问题描述】:

我有一个 WEB API,它充当 ASP.NET MVC 客户端应用程序之一的授权服务器(基于 OAUTH 声明)。 API 的编写方式使其能够为数据库中配置的任何客户端应用程序提供身份验证。 Web api 和客户端应用程序都作为 Web 应用程序部署到 Azure 并按预期运行。

现在我有第二个 MVC 客户端应用程序,它也将部署到 Azure Web 应用程序。 我的问题是当用户登录第一个应用程序时如何为第二个应用程序实现 SSO

webapp1 Login page      --->   
                              WEB API OAUTH Claims authentication 
      user logs in      <---  

webapp2 (needs SSO)--- >? 

我们是否需要在 Azure 中拥有 VM 或在 Azure 中拥有 Active Directory 才能实现这一目标?

【问题讨论】:

我不太了解您的授权服务器是如何工作的。但我知道,如果您使用 AAD 登录,您可以使用 AAD 让您使用多 Azure Web 应用程序进行 SSO。例如。两个 Web App 都使用带有 AAD 的 Easy Auth,如果您登录 web app1,您将 SSO web App2。 @WayneYang-MSFT - 我的授权服务器基于 Microsoft 身份,如果用户已注册并在登录请求进入时存在于数据库中,则该身份会发出声明。此外,传递用户凭据还必须将 clientid 和客户端密码传递给授权服务器,以便在我们的数据库中验证自己是配置的客户端 【参考方案1】:

第一种情况:您的第二个客户端App与第一个具有相同的域。

  We can use session to save the authentication information(OAuth access token, refresh token, etc) when someone access the first client App. 

  Then, when he/she access the second client App, we can use the same authentication information to do authentication.

第二种情况:你的第二个客户端App和第一个有不同的域。

  We can create a SSO Server to use session to save the authentication information like the first case.

这是供您参考的流程图。

关于SSO的介绍,这里有一篇文章供大家参考: About SSO

【讨论】:

【参考方案2】:

根据我的理解,AAD 是一个不错的选择,正如 Wayne Yang - MSFT 所说,可以实现您的目的。

根据您的评论,我假设您可以利用IdentityServer 框架来实现单点登录。我只是按照这个tutorial 来实现SSO。以下是截图:

在实施过程中,我遇到了关于 IdentityServer3 logout with PostLogoutRedirectUris not working 的问题,我按照这个类似的问题 PostLogoutRedirectUri not work #1121 使其按预期工作。

您可以关注IdentityServer3 Samples 关于IdentityServer3.AspNetIdentity 的详细信息,以在 IdentityServer3 下使用 ASP.NET Identity 进行身份管理。此外,您还可以关注IdentityServer4 获取 ASP.NET Core。

【讨论】:

以上是关于具有多个 Azure Web 应用程序的 SSO的主要内容,如果未能解决你的问题,请参考以下文章

使用 Travis CI 将代码从同一分支部署到多个 Azure Web 应用程序

是否可以在 Windows azure 上拥有一个具有多个域和 SSL 证书的 Web 角色?

使用 Azure Active Directory 或 ADFS 或 AD 的 SSO

CAS SSO单点登录框架学习

CAS SSO单点登录框架介绍

CAS SSO单点登录框架学习