# 同时使用 Authing 作为 SP 和 IdP

本教程讲述如何使用 Authing 云上的 SAML2 SP 和 SAML2 IdP 为企业或个人快速接入单点认证能力。完成本教程后,你会拥有运行在 Authing 云上的 SAML2 Service Provider 和 SAML2 Identity Provider 来处理 SAML2 协议相关的过程,而你只需关注 Authing 返回的用户信息与 JWT Token。

在用户访问受保护的资源时,结合 Authing SDK 可以对他携带的 JWT Token 进行验证。如果 JWT Token 验证失败,只需将用户重定向到 SAML Service Provider 的云上地址,它会负责通过 SAML 协议与 IdP 交换信息从而认证用户,并返回 JSON 格式的用户信息。

# 创建一个应用

控制台 > 应用 > 应用列表,点击右侧的「创建应用」按钮。 创建应用

创建应用

在右侧弹出的抽屉中,输入相关信息,应用名称回调链接认证地址都可以随意填写。其余配置保持默认即可。点击「创建」。 创建应用

输入应用信息

# 启用 SAML2 Identity Provider 功能

找到刚刚创建的应用,点击「配置」。 配置应用

进入应用配置

点击「配置 SAML2 身份提供商」选项卡,然后点击「启用 SAML2 Provider」滑块,启用 SAML IdP。 启用 SAML

启用 SAML2 Provider

# 下载 SAML2 Identity Provider 签名证书

将 SAML2 Identity Provider 签名证书下载并保存。

下载链接为:https://core.authing.cn/api/v2/saml-idp/<应用 ID>/cert。

# 创建一个 SAML2 身份联邦

应用控制台 > 连接身份源 > 企业身份源,点击「连接 SAML IdP」。 创建 SAML2 身份联邦连接

创建 SAML2 身份联邦连接

在右侧弹出的抽屉中,输入一个连接标识符,用于唯一标识此连接。

将刚才下载的证书通过文本编辑器打开,将内容复制到验签证书文本框中。 填写信息

然后在下方的登录地址和登出地址输入框中,输入 Authing SAML2 IdP 的登录地址和登出地址:

登录地址https://core.authing.cn/api/v2/saml-idp/<应用 ID>

登出地址https://core.authing.cn/logout

填写信息

其余配置保留默认即可,点击「保存」。

点击刚刚创建的连接卡片上的设置按钮,记录 SAML2 连接的 ID。

查找 SAML2 连接 ID

# 配置 SAML2 Identity Provider

控制台 > 应用 > 应用列表,找到刚才创建的应用,点击「配置」,进入应用详情后,点击「配置 SAML2 身份提供商」。

默认 ACS 地址输入框中填写:https://core.authing.cn/v2/api/connection/saml/<SAML2 连接 ID>/acs。

设置中填写以下内容:

{
    "audience": null,
    "recipient": null,
    "destination": null,
    "mappings": null,
    "digestAlgorithm": "http://www.w3.org/2001/04/xmlenc#sha512",
    "signatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha512",
    "authnContextClassRef": "urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified",
    "lifetimeInSeconds": 3600,
    "signResponse": false,
    "nameIdentifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",
    "samlRequestSigningCert": ""
}

最后点击「保存」。

# 测试连接

在浏览器的地址栏中,输入 https://<应用域名>.authing.cn。应用域名可以在控制台 > 应用 > 应用列表,找到刚刚创建的应用,点击「配置」,在应用详情页面找到。

查找应用域名

访问后,可以看到登录方式中出现了 SAML2 身份联邦连接。

SAML2 身份联邦连接

点击该按钮,弹出登录框,在 IdP 进行登录。由于 SAML2 IdP 也在 Authing,所以两个登录框的样式是类似的。 在 SAML2 Provider 登录

在弹出的窗口中登录。

在 SAML2 IdP 登录

登录成功后,回调到了应用详情中配置的回调地址。code 授权码在 URL 的 query 中返回,可以使用 code 获取用户信息,详情请参考。

登录成功