代码示例:OAuth 2.0 证书身份验证
更新时间:2015 年 6 月 19 日
适用于:Azure
此示例演示如何通过演示 X.509 证书签名的 SAML 令牌,向Microsoft Azure Active Directory 访问控制 ((也称为访问控制服务或 ACS) )进行身份验证。 此证书对应于在 ACS 上配置的 ServiceIdentity,ACS 会颁发具有 ServiceIdentity 的 nameidentifier 声明的 SWT。 此 SWT 用于通过 OAuth 2.0 所保护的资源进行身份验证。 本示例遵从 OAuth 2.0 协议草案 13。 此示例的代码位于 Microsoft Azure Active Directory 访问控制 (ACS) 代码示例包的 OAuth2 (C#\OAuth) 2 子目录中。
先决条件
若要运行此示例,需要:
Azure 门户和访问控制命名空间中的帐户。
Visual Studio 2010 (任何版本)
有关详细信息,请参阅 ACS 先决条件 (https://go.microsoft.com/fwlink/?LinkId=221065) 。
配置示例
可以使用 ACS 管理门户或 ACS 管理服务执行此示例所需的 ACS 配置。 本主题介绍了这两个选项。
选项 1:使用 ACS 管理门户配置示例
选项 2:使用 ACS 管理服务配置示例
选项 1:使用 ACS 管理门户配置示例
使用 ACS 管理门户配置示例
转到Microsoft Azure管理门户 (https://manage.WindowsAzure.com) 登录,然后单击“Active Directory”。 (故障排除提示: “Active Directory”项缺失或不可用)
若要创建访问控制命名空间,请依次单击“新建”、“应用程序服务”和“访问控制”,然后单击“快速创建”。 (或者,先单击“访问控制命名空间”,然后单击“新建”。)
若要管理访问控制命名空间,请选择该命名空间,然后单击“管理”。 (或者,单击“访问控制命名空间”,选择命名空间,然后单击“管理”。)
此操作将打开访问控制服务管理门户。
若要向 ACS 注册应用程序,请单击 “信赖方应用程序”,单击“ 添加”,然后在窗体中键入以下信息:
在“名称”字段中,输入 OAuth2 RP
在 “领域 ”字段中,输入 https://oauth2relyingparty/
在“令牌格式”字段中,选择“SWT”
单击“生成”以创建新密钥
在“到期日期”字段中,输入该密钥的适当到期日期。 到此日期后,该密钥将不再有效。
单击“ 保存”。
注册信赖方后,现在可以创建确定 ACS 向应用程序发出的声明的规则。 在此示例中,我们将创建一个规则,用于授予 ACS 生成的任何声明通过。
若要创建此规则,请单击“规则组”,然后单击“OAuth2 RP 的默认规则组”。 使用以下设置添加新规则:
在“声明颁发者”部分,选择“访问控制服务”
在“输入声明类型”部分,选择“任何”
在“输入声明值”部分,选择“任何”
在“输出声明类型”部分,选择“传递输入声明类型”
在“输出声明值”部分,选择“传递输入声明值”
此示例依赖于 ACS 管理的凭据。
若要为客户端应用程序配置新客户端证书,请单击“服务标识”,单击“添加”,然后键入一个名称。 添加凭据类型“X.509 证书”,并在本示例的 Certificates 文件夹中通过浏览找到 ACS2ClientCertificate.cer 文件。 单击“ 保存”。
配置 ACS 后,打开Visual Studio。
选项 2:使用 ACS 管理服务配置示例
Visual Studio示例解决方案具有一个名为 ConfigureSample 的控制台应用程序,该应用程序使用 ACS 管理服务和 Common 类库中定义的常见帮助程序。 此应用程序可用于配置访问控制命名空间,以便与此示例一起使用。
使用 ACS 管理服务配置示例
使用有关访问控制命名空间的信息更新 Common 类库。 打开 SamplesConfiguration.cs 并输入以下信息:
ServiceNamespace - 这是访问控制命名空间的名称
ManagementServiceIdentityName - 这是管理服务帐户的名称
ManagementServiceIdentityKey - 这是与管理服务帐户关联的密码
AcsHostUrl - 这是 ACS 的主机名
在 Visual Studio 中运行 ConfigureSample 应用程序。 这将配置 ACS 以运行此示例。
ConfigureSample 应用程序运行完后,会将生成的信赖方签名密钥输出到控制台。 请将此密钥复制到剪贴板。
运行示例
运行示例
在 Visual Studio 中打开该示例。 除了 ConfigureSample 和 Common 之外,该解决方案还包含两个项目: ProtectedResourceWebApp 和 Client。
如果尚未这样做,请在 Common\SamplesConfiguration.cs 中输入访问控制命名空间详细信息。 有关详细信息,请参阅 选项 2 的步骤 1:通过上述 ACS 管理服务进行配置 。 Client 项目也使用此文件。
在 ProtectedResourceWebApp 项目中打开 web.config 文件。
在相应的 AppSettings 元素中输入令牌签名密钥。 如果使用管理服务配置 ACS,则此值将复制到剪贴板。 若要获取令牌签名密钥,请在 ACS 门户中单击“ 证书和密钥”。 以下代码段显示了 web.config 文件的此节:
<appSettings> <add key="SigningKey" value="...Copy Signing Key..."/> </appSettings>
若要运行本示例,请启动 ProtectedResourceWebApp。 此时将显示一个 Web 浏览器,但文本框是空的,因为该 Web 浏览器未经过身份验证。
运行 Client。 控制台窗口中将显示 HTML。 请注意,HTML 指示用户已经过身份验证并显示 ACS 中的声明。