如何:使用 ACS 创建我的第一个声明感知 ASP.NET 服务

更新时间:2015 年 6 月 19 日

适用于:Azure

应用于

  • Microsoft Azure Active Directory 访问控制(也称为访问控制服务或 ACS)

概述

注意

本主题与传统技术相关。 若要创建 XML Web 服务和 XML Web 服务客户端,请参阅 https://go.microsoft.com/fwlink/?LinkID=220304

本主题介绍如何将简单的 ASP.NET Web 服务与 ACS 集成。 通过将 Web 服务与 ACS 集成,可以将身份验证和授权的功能从代码中考虑在内。 ACS 提供向 Web 服务进行身份验证和授权客户端的机制。 有关详细信息,请参阅 Web 服务和 ACS

假设在某个 Web 服务方案中,Web 服务客户端不具有访问浏览器的权限,但能够自主运行(无需用户参与)。 此外,在 Web 服务方案中,客户端还可以使用服务标识或企业标识来获取对 Web 服务的访问权限。 在本主题中所述的练习中,客户端可以使用 ACS 中配置的服务标识凭据类型访问示例 ASP.NET Web 服务。

若要执行本主题中的步骤,你必须下载示例 ASP.NET 服务。 有关详细信息,请参阅代码示例:ASP.NET Web 服务

将 ACS 与 ASP.NET Web 服务集成的步骤

重要

在执行以下步骤之前,请确保系统满足 ACS 先决条件中汇总的所有 .NET 框架和平台要求。

若要将 ACS 与此示例 ASP.NET Web 服务集成,请完成以下步骤:

  • 步骤 1 - 创建 Access Control 命名空间

  • 步骤 2 – 启动 ACS 管理门户

  • 步骤 3 - 添加信赖方应用程序

  • 步骤 4 - 创建规则

  • 步骤 5 – 配置服务标识

  • 步骤 6 – 配置 ACS 和 ASP.NET Web 服务之间的信任

  • 步骤 7 – 测试 ACS 和 ASP.NET Web 服务之间的集成

步骤 1 - 创建 Access Control 命名空间

有关详细说明,请参阅如何:创建访问控制命名空间

步骤 2 – 启动 ACS 管理门户

ACS 管理门户允许你通过添加标识提供者、配置信赖方应用程序、定义规则和规则组以及建立信赖方应用程序信任的凭据来配置访问控制命名空间。

启动 ACS 管理门户

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

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

步骤 3 - 添加信赖方应用程序

本部分介绍如何添加信赖方应用程序。 有关信赖方应用程序的详细信息,请参阅 信赖方应用程序

设置信赖方应用程序

  1. 在 ACS 管理门户中,单击左侧树中的信赖方应用程序,或单击入门部分下的信赖方应用程序链接。

  2. 在“信赖方应用程序”页上,单击“添加”

  3. 在“添加信赖方应用程序”页上执行以下操作

    • 在“名称”中键入信赖方应用程序的名称。 对于本练习,请键入 ASPNET Simple Service

    • 在“模式”中选择“手动输入设置”

    • Realm 中,键入 ACS 颁发的安全令牌适用的 URI。 对于本练习,请键入 https://localhost:8000/Service

    • “返回 URL”中,键入 ACS 将安全令牌返回到的 URL。 对于本练习,请键入 https://localhost:8000/Service

    • “错误 URL” (可选) 中,输入 ACS 在登录期间发生错误时可以帖子的 URL。 对于本练习,请将此字段留空。

    • 令牌格式中,选择 ACS 在向此信赖方应用程序颁发安全令牌时要使用的令牌格式。 对于本练习,请选择“SWT”。 有关令牌和令牌格式的详细信息,请参阅信赖方应用程序中ACS 支持的令牌格式和“令牌格式”。

    • 在“令牌生存期(秒)”中,指定 ACS 颁发的安全令牌保持有效的时间长度。 对于本练习,请接受默认值 600。 有关令牌生存期的详细信息,请参阅 信赖方应用程序中的“令牌加密策略”。

    • 在“标识提供程序”中,你可以选择要用于此信赖方应用程序的标识提供程序

      但是,对于本练习,没有使用标识提供者,客户端可以使用服务标识访问 Web 服务,因此请确保清除Windows实时 ID 旁边的复选框。

      有关服务标识的详细信息,请参阅 服务标识

    • 在“规则组”中,选择此信赖方应用程序在处理声明时使用的规则组。 对于本练习,请接受默认选中的“新建规则组”。 有关规则组的详细信息,请参阅 规则组和规则

    • 在“令牌签名设置”下的“令牌签名密钥”中,单击“生成”按钮为此信赖方生成一个 256 位对称密钥

  4. 单击“ 保存”。

步骤 4 - 创建规则

规则确定如何从标识提供者或 ACS 传递声明, (ACS 是否是向信赖方应用程序) 声明颁发者。 有关规则和规则组的详细信息,请参阅 规则组和规则

创建规则

  1. ACS 管理门户主页上,单击左侧树中的“规则组”,或单击“入门”部分下的“规则组”链接。

  2. 在“规则组”页上,单击“ASPNET Simple Service 的默认规则组”(因为你已将信赖方应用程序命名为 ASPNET Simple Service)。

  3. “编辑规则组”页上,单击“添加”

  4. 在“添加声明规则”页上执行以下操作

    • 在“If”部分中的“声明颁发者”下,选择“访问控制服务”

    • 在“If”部分中的“输入声明类型”下,保留默认选定的“任何”

    • 在“If”部分中的“输入声明值”下,保留默认选定的“任何”

    • 在“Then”部分的“输出声明类型”下,选择 Enter 类型,然后选择类型操作,因为这是在本练习中所使用的 ASP.NET Web 服务示例代码中指定的声明类型: requiredClaimType = “action” 可以在 acs\WebServices\ASPNETSimpleService\Service\Service 下的示例代码(在 Default.aspx.cs)中找到此字符串。

    • 在“Then”部分的“输出声明值”下,选择 Enter 值,然后反向键入,因为这是在本练习中所使用的 ASP.NET Web 服务示例代码中指定的声明类型: requiredClaimValue = “reverse” 可以在 acs\WebServices\ASPNETSimpleService\Service\Service 下的示例代码(在 Default.aspx.cs)中找到此字符串。

    • 单击“ 保存”。

  5. 编辑规则组页捼,单击麋擹

步骤 5 – 配置服务标识

在本主题中所述的练习中,客户端从 ACS 请求 ACS 颁发的简单 Web 令牌 (SWT) ,其用户名和密码由 ACS 注册和管理,换句话说,是 ACS 服务标识。 本部分介绍如何配置 ACS 服务标识,或如何配置 ACS 托管的凭据,客户端可用于从 ACS 请求令牌。 有关详细信息,请参阅 服务标识。 在本练习中,将服务标识名称设置为 acssample (ASP.NET 服务客户端在从 ACS) 请求令牌时使用此值作为用户名,并将密码设置为pass@word1

配置服务标识

  1. ACS 管理门户主页 上,单击左侧树中的 服务标识

  2. 在“服务标识”页上,单击“添加”

  3. 在“添加服务标识”页上执行以下操作,然后单击“保存”

    1. 在“名称”中,键入 acssample

    2. 在“类型”中,选择“密码”

    3. “密码”中,键入 pass@word1

    4. 保留“生效日期”和“到期日期”中的默认值不变

  4. 在“编辑服务标识”页上,单击“保存”

步骤 6 – 配置 ACS 和 ASP.NET Web 服务之间的信任

本部分介绍如何将 ACS 与示例 ASP.NET 服务集成。 有关详细信息,请参阅代码示例:ASP.NET Web 服务

配置 ACS 和 ASP.NET Web 服务之间的信任

  1. 在你下载的示例中找到 ASPNETSimpleService.sln,并在 Visual Studio® 2010 中将其打开。

  2. 在 Visual Studio 2010 的“解决方案资源管理器”中的“解决方案‘ASPNETSimpleService’”下,双击“web.config”

  3. web.config中,输入在上述步骤中在 ACS 中配置的访问控制命名空间名称和令牌签名密钥。 若要查看令牌签名密钥,请单击 ACS 管理门户中的 “证书和密钥 ”。

    以下代码段演示了需要更新 web.config 文件的哪些元素。

    <appSettings>
        <add key="AccessControlHostName" value="accesscontrol.windows.net"/>
        <add key="AccessControlNamespace" value="...enter your Access Control namespace name..."/>
        <add key="IssuerSigningKey" value="...enter your signing key..."/>
      </appSettings>
    
  4. 保存已更新的 web.config 文件。

  5. 在 Visual Studio 2010 的“解决方案资源管理器”中的“解决方案‘ASPNETSimpleService’”下,双击 app.config 文件

  6. app.config文件中,输入访问控制命名空间的名称以及前面步骤中在 ACS 中配置的服务标识的用户名和密码。 若要查看用户名和密码,请单击 ACS 管理门户中 的服务标识

    以下代码段演示了需要更改 app.config 文件的哪些元素。

    <appSettings>
        <add key="AccessControlHostName" value="accesscontrol.windows.net"/>
        <add key="AccessControlNamespace" value="...enter your Access Control namespace name..."/>
        <add key="WrapPassword" value="...update to your password..."/>
        <add key="WrapUsername" value="...update to your username..."/>
        <add key="ServiceAddress" value="https://localhost:8000/Service/Default.aspx" />
      </appSettings>
    
  7. 保存已更新的 app.config 文件。

步骤 7 – 测试 ACS 和 ASP.NET Web 服务之间的集成

本部分介绍如何测试 ASP.NET Web 服务和 ACS 之间的集成。

测试 ACS 和 ASP.NET Web 服务之间的集成

  1. 若要运行 ASP.NET 服务,请在 Visual Studio 2010 中按 F5。

  2. 若要运行 ASP.NET Web 服务客户端,请右键单击解决方案资源管理器中的“客户端”,选择“调试”,然后选择“启动新实例”

    此时会打开一个命令行窗口,其中包含以下消息: 输入要反转的字符串,然后按 <Enter>

  3. 输入任意字符串,例如 hello world!,然后按 Enter。

    如果输入是 hello world!,则应在控制台应用程序上看到以下响应: !dlrow olleh

另请参阅

概念

ACS 操作指南