代码示例:ASP.NET Web 服务

更新时间:2015 年 6 月 19 日

适用于:Azure

此示例演示如何将Microsoft Azure Active Directory 访问控制 (也称为访问控制服务或 ACS) 集成到简单的 Web 服务中。 它使用 ASP.NET 作为 Web 服务主机以及命令行客户端。 ASP.NET Web 服务需要 ACS 颁发的 SWT 令牌。 客户端从 ACS 请求令牌,其中包含向 ACS 注册的用户名和密码。 此示例的代码位于 MICROSOFT AZURE ACTIVE DIRECTORY 访问控制 (ACS) 代码示例包的 ASPNETSimpleService (C#\WebServices\ASPNETSimpleService) 子目录中。

先决条件

若要运行此示例,需要:

  1. 在 Azure 主页上创建帐户并创建访问控制命名空间。

  2. Visual Studio 2010 (任何版本)

有关详细信息,请参阅 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. 若要向 ACS 注册应用程序,请单击 “信赖方应用程序”,单击“ 添加”,然后在窗体中输入以下信息:

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

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

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

    • “令牌格式”下拉列表框中选择 SWT

    • 在“令牌签名密钥”字段中,单击“生成”以创建一个令牌签名密钥。 复制此密钥,以便稍后在配置中使用。

    • 在“到期日期”字段中,输入该密钥的适当到期日期。 此日期的密钥将不再有效

    • 让其他字段保留其默认值。

  5. 单击“保存”,然后单击“主页”以返回到访问控制服务管理门户的主页。

  6. 注册信赖方后,现在可以创建确定 ACS 向应用程序发出的声明的规则。 在此示例中,我们将创建一条规则,以便使用值 reverse 授予任何已注册用户名和密码一个 action 声明。 若要创建此规则,请单击“主页”以返回到访问控制服务管理门户的主页,单击“规则组”,然后单击“用于 ASP.NET 简单服务的默认规则组”。 添加具有以下设置的新规则:

    • “声明颁发者”部分,选择“访问控制服务”

    • “输入声明类型”部分,选择“任何”

    • “输入声明值”部分,选择“任何”

    • “输出声明类型”部分,选择“输入类型”,并在该字段中键入 action

    • “输出声明值”部分,选择“输入值”,并在该字段中键入 reverse

  7. 与网站示例相反,此示例依赖于 ACS 管理的凭据。 配置 ACS 的最后一步是注册要使用的客户端应用程序的用户名和密码。 若要配置新的用户名和密码,请单击“主页”以返回到访问控制服务管理门户的主页,单击“服务标识”,单击“添加”,然后填写该表单。 对于此示例,使用用户名 acssample、凭据类型“密码”和密码 pass@word1

  8. 单击“保存”,然后单击“主页”以返回到访问控制服务管理门户的主页。

选项 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 以运行此示例。

  3. ConfigureSample 应用程序运行完后,会将生成的信赖方签名密钥输出到控制台。 请将此密钥复制到剪贴板。

运行示例

运行示例

  1. 在 Visual Studio 中打开该示例。 该解决方案由两个项目组成:服务和客户端

  2. 如果尚未这样做,请在 Common\SamplesConfiguration.cs 中输入访问控制命名空间详细信息。 有关详细信息,请参阅 选项 2 的步骤 1:通过 ACS 管理服务进行配置。 “服务”和“客户端”项目也使用此文件。

  3. 在“服务”项目中打开 web.config 文件。 在相应的 AppSettings 元素中输入令牌签名密钥。 如果使用管理服务配置 ACS,则此值将复制到剪贴板。 若要获取令牌签名密钥,请参阅门户的“证书和密钥”区域。 以下代码段显示了服务 web.config 文件的此区域。

    <appSettings>
        <add key="IssuerSigningKey" value="...update to your signing key..."/>
      </appSettings>
    
  4. 在“客户端”项目中打开 app.config 文件。 在相应的 AppSettings 元素中输入你的用户名和密码。 若要获取你之前注册的用户名和密码,请参阅门户的“服务标识”区域。 以下代码段显示了客户端 app.config 文件的此区域(已适当更新)。

      <appSettings>
        <add key="OAuthUserName" value="acssample" />
        <add key="OAuthPassword" value="pass@word1" />
        <add key="ServiceAddress" value="https://localhost:8000/Service/Default.aspx" />   
      </appSettings>
    
  5. 若要运行此示例,请启动服务,然后启动客户端。 在客户端上,输入要反向的字符串。 然后,客户端控制台窗口应显示输出,指示它已从 ACS 收到令牌。