代码示例:ASP.NET 简单 MVC 2

更新时间:2015 年 6 月 19 日

适用于:Azure

此示例演示如何将Microsoft Azure Active Directory 访问控制 (也称为访问控制服务或 ACS) 与 ASP.NET MVC 应用程序集成。 此示例的代码位于 Microsoft Azure Active Directory 访问控制 (ACS) 代码示例包的 ASPNETSimpleMVC (C#\Websites\ASPNETSimpleMVC) 子目录中。

先决条件

若要运行此示例,需要:

  1. Azure 主页上的帐户和访问控制命名空间。 此示例假定转到Microsoft Azure管理门户的名称 (https://manage.WindowsAzure.com) 登录,然后单击 Active Directory。 (故障排除提示:“Active Directory”项缺失或不可用) 是 acssamples,即使访问控制命名空间名称会有所不同。

  2. Visual Studio 2010 (任何版本)

  3. Windows Identity Foundation SDK

有关详细信息,请参阅 ACS 先决条件 (https://go.microsoft.com/fwlink/?LinkId=221065) 。

配置示例

可以使用 ACS 管理门户或 ACS 管理服务执行此示例所需的 ACS 配置。 本主题介绍了这两个选项。

  1. 选项 1:使用 ACS 管理门户配置示例

  2. 选项 2:使用 ACS 管理服务配置示例

选项 1:使用 ACS 管理门户配置示例

使用 ACS 管理门户配置示例

  1. 转到Microsoft Azure管理门户 () https://manage.WindowsAzure.com 登录,然后单击“Active Directory”。 (故障排除提示: “Active Directory”项缺失或不可用)

  2. 若要创建访问控制命名空间,请依次单击“新建”、“应用程序服务”和“访问控制”,然后单击“快速创建”。 (或者,先单击“访问控制命名空间”,然后单击“新建”。)

  3. 若要管理访问控制命名空间,请选择该命名空间,然后单击“管理”。 (或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)

    此操作将打开访问控制服务管理门户。

  4. 若要与你希望网站用户在登录时使用的标识提供程序建立关系,请单击“标识提供程序”,然后添加 Yahoo!Google。 若要返回到主页,请单击“主页”

  5. 若要将应用程序注册到 ACS,请在访问控制服务管理门户的主页上,单击“信赖方应用程序”,单击“添加”,然后在窗体中输入以下信息:

    • “名称”字段中,输入 ASPNET Simple MVC Sample

    • “领域” 字段中,输入 https://localhost:63000/

    • “返回 URL ”字段中,输入 https://localhost:63000/

    • “错误 URL ”字段中,输入 https://localhost:63000/Error

    • 在“令牌格式”字段中,选择“SAML 2.0”

    • 在“令牌签名”字段中,选择“使用服务命名空间证书(标准)”

  6. 单击“保存”,然后单击“主页”以返回到主页。

  7. 注册信赖方后,现在可以创建确定 ACS 向应用程序发出的声明的规则。 在此示例中,我们将只传递标识提供程序发出的所有声明。 若要创建此规则,请单击“规则组”,然后单击“用于 ASPNET 简单 MVC 示例的默认规则组”。 在靠近页面底部的位置,单击“生成”链接。 确保选择了三个标识提供者 Yahoo!、Google 和 Windows Live ID (Microsoft 帐户) ,然后单击“生成”。

  8. 单击“保存”,然后导航回主页。

  9. 配置 ACS 后,打开Visual Studio。

选项 2:使用 ACS 管理服务配置示例

Visual Studio示例解决方案有一个名为 ConfigureSample 的控制台应用程序,该应用程序使用 ACS 管理服务和 Common 类库中定义的常见帮助程序。 此应用程序可用于配置访问控制命名空间以用于此示例。

使用 ACS 管理服务配置示例

  1. 若要配置本示例,请打开 SamplesConfiguration.cs (acs\Management\ManagementService\Common)。 将 Common 类库中 SamplesConfiguration 类中的占位符替换为有关访问控制命名空间的信息。 可以在 ACS 管理门户中找到信息。

    若要导航到 ACS 管理门户:请转到Microsoft Azure管理门户 () https://manage.WindowsAzure.com 登录,然后单击“Active Directory”。 (故障排除提示:“Active Directory”项缺失或不可用) 若要管理访问控制命名空间,请选择命名空间,然后单击“管理”。 (或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)

    • ServiceNamespace - 输入访问控制命名空间的名称。

    • ManagementServiceIdentityName - 输入 ACS 管理服务帐户的名称。 默认值为 ManagementClient

      若要查找管理服务帐户名称,请在 ACS 管理门户中单击 “管理服务”。 帐户已按名称列在“管理服务帐户”下面

    • ManagementServiceIdentityKey - 输入与管理服务帐户关联的密码。

      若要查找管理服务帐户密码,请在 ACS 管理门户中单击 “管理服务”。 单击管理服务帐户的名称,然后在“凭据”下面单击“密码”。 密码将显示在“密码”字段中。 若要复制密码,请单击“显示密码”

  2. 在 Visual Studio中运行 ConfigureSample 应用程序,它将配置 ACS 以运行此示例。

运行示例

运行示例

  1. 在 Visual Studio 中打开位于 Websites\ASPNETSimpleMVC\ASPNETSimpleMVC.sln 的示例

  2. F5 启动该应用程序。

  3. 关闭浏览器以停止应用程序并继续配置 ACS。

  4. 右键单击该项目,然后从上下文菜单中选择“添加 STS 引用”

  5. 在对话框中,将 Web 应用程序的根路径输入到“应用程序 URI”字段中,然后单击“下一步”。 对于此示例,此值为 https://localhost:63000/

    注意

    尾部斜杠很重要,因为它与在 ACS 中输入的值一起排队供信赖方使用。 如果站点未使用 SSL,此向导将发出警告。 单击“是”按钮接受此警告,但请记住,对于这些方案,产品网站几乎始终应使用 SSL。

  6. 在下一个窗口中,选择“使用现有 STS”单选按钮,然后输入访问控制命名空间发布的WS-Federation元数据的 URI。 若要查找 URI,请在 ACS 门户中单击 “应用程序集成”。 如果访问控制命名空间的名称为 acssamples,则 URI 为 https://acssamples.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml。 在输入此值后,单击“下一步”

  7. 由于你的网站不需要加密的令牌,请单击“下一步”,然后单击“完成”

  8. ACS 和应用程序现已配置。 按 Visual Studio 中的 F5 运行应用程序。 浏览器将定向到 ACS 托管的主领域发现页面。

  9. 单击“Google”。 你的浏览器将重定向到 Google 登录页。

  10. 输入 Google 帐户的凭据,并拒绝用户许可窗体中的条款。

  11. 浏览器应返回 https://localhost:63000/Error 并显示一个自定义错误字符串,指示已取消登录站点。

  12. 若要重试,请单击该链接,然后单击一个标识提供程序。

  13. 你的浏览器转到标识提供程序后,输入测试帐户的凭据,但这次接受用户许可窗体中的条款。

  14. 浏览器应返回到 https://localhost:63000/。 请注意,测试标识名称将显示在该页右上角区域。 此数据由标识提供者颁发,并通过 ACS 返回到应用程序。