配置 SAML 身份验证(CLI 过程)
在此配置中,您将了解如何在瞻博网络安全连接中设置基于安全性断言标记语言 (SAML) 的用户身份验证。
瞻博网络安全连接支持使用 SAML v2 (SAML 2.0) 进行远程用户身份验证。在此配置示例中,SRX 系列防火墙服务器作为 SAML 服务提供商,并使用 SAML IdP 对瞻博网络安全连接用户进行身份验证。
| 阅读时间 |
不到一小时 |
| 配置时间 |
不到一小时 |
先决条件示例
确保您满足以下先决条件:
-
了解示例中的以下主要组件。
-
是否支持某项功能取决于您使用的平台和版本。使用 功能资源管理器 确定您的平台是否支持某个功能。
-
在配置服务提供商之前,请确保您的 IdP 有一个帐户。确认您已在 IdP 应用程序中配置了所有必要的设置。记下 IdP 帐户上的以下项目:
-
确保 IdP 上的断言使用者服务 (ACS) URL 的格式是将 SAML 断言从 IdP 发送到服务提供商的格式
https://<domain-name>/saml2/acs。ACS URL 是 Okta 中的 单点登录 (SSO) URL ,也是 Microsoft Azure 中的 回复 URL 。 -
不要在 Microsoft Azure IdP 设置中为用户定义的属性配置 命名空间 。
-
记下 IdP 实体 ID。
-
记下 sSSO URL。
-
请注意单个注销 URL。
-
从 IdP 下载签名证书并将其加载到防火墙。
user@vsrx> request security pki ca-certificate load filename /<local-directory-path>/<idp-cert-filename> ca-profile <ca-profile-name>
该示例包括 EXAMPLE-证书颁发机构作为 ca-profile-name.
-
确保已在 IdP 应用程序中创建用户。
-
-
确保防火墙(服务提供商)可以使用面向 Internet 的界面访问 IdP SSO 和单个注销 URL。
-
确保已为 Web 管理和 SSL 配置文件创建防火墙(服务器端)自签名证书。还可以使用 证书颁发机构签名的证书。
-
确保已为 IKE 证书颁发机构签名的证书。
| 硬件要求 |
|
| 软件要求 |
|
开始之前
| 了解用于瞻博网络安全连接的 SAML |
|
| 了解更多 |
了解 SAML 的 Junos 配置语句和 CLI 命令。 请参阅 saml、身份验证顺序 (access-profile)、saml(访问配置文件)、saml-options、显示网络访问 aaa saml 断言缓存、显示网络访问 aaa 统计信息、请求网络访问 aaa saml load-idp-metadata、请求网络访问 aaa saml export-sp-metadata、清除网络访问 aaa saml 断言缓存、清除网络访问 aaa saml idp-metadata 和清晰的网络访问 AAA 统计信息 |
功能概述
| 功能组件 |
详情 |
|---|---|
| 证书 |
|
| 用于 Web 管理的自签名证书或 证书颁发机构签名证书 |
|
| SSL 配置文件的自签名证书或 证书颁发机构签名证书 |
|
| 证书颁发机构签名的 IKE 证书 |
|
| 来自 IdP 的签名证书 |
SAML IdP 证书是 |
| IKE |
|
| IKE 提议 |
|
| IKE 策略 |
|
| IKE 网关 |
|
| IPsec |
|
| IPsec 提议 |
|
| IPsec 策略 |
|
| SAML 访问配置文件 |
|
| SAML 认证顺序 |
访问配置文件 |
| SAML IdP |
|
| SAML IdP 名称 |
|
| SAML IdP 实体 ID |
|
| SAML 登录 URL |
|
| SAML 注销 URL |
|
| SAML IdP 证书 |
|
| SAML 用户属性 |
user1(委托人)请求访问权限。SAML 用户属性是名称值对,即 IdP 属性。这些属性包括用户信息,例如在 IdP 上配置的名字、姓氏或电子邮件。IdP 通过 SAML 断言将此信息发送给服务提供商。 在防火墙配置期间,指定与主体相关的属性是必需的还是可选的。 |
| SAML 服务提供商 |
|
| SAML 服务提供商名称 |
|
| SAML 服务提供商实体 ID |
提示:SAML 域名区分大小写。
Example.net不同
example.net于 SAML 中的应用。
|
| 远程访问 |
|
| 公司简介 |
|
| SSL |
|
| 端接配置文件 |
|
| 安全性区域 |
|
| 信任 |
面向服务器等企业资源的网段。 |
| 不信任 |
面向互联网的网段。请注意,IdP 可通过此分段到达。 |
| VPN |
使用安全隧道接口 st0.0 的网段。 |
| 安全性策略 |
允许您选择数据流量的类型。
|
| 源 NAT |
源 NAT,以允许来自 VPN 客户端的流量到达内部服务器。 |
拓扑概述
在此示例中,瞻博网络安全连接客户端通过防火墙 vSRX 启动远程访问 VPN 连接建立。防火墙向 瞻博网络安全连接 发送 SAML 身份验证请求,后者会与 IdP 核对用户身份验证。身份验证完成后,防火墙将确认 SAML 断言,并建立远程访问 VPN 隧道。
| 主机名 |
角色 |
功能 |
|---|---|---|
| vSRX |
|
|
| 客户端 |
远程访问 VPN 客户端 |
在瞻博网络安全连接中,使用瞻博网络安全连接应用的笔记本电脑或计算机会发起与防火墙的 VPN 连接。 |
| IdP |
SAML IdP |
在瞻博网络安全连接中,IdP 对用户进行身份验证,并向服务提供商提供身份断言。IdP 生成身份验证断言以确认用户身份验证。Okta 在此示例中充当 IdP |
| 服务器 |
信任区域中的服务器 |
瞻博网络安全连接客户端尝试访问内部公司服务器。 |
拓扑图示
中基于 SAML 的用户身份验证
在 vSRX 上进行分步配置
验证
本节提供了可用于验证此示例中的功能的 show 命令列表。.
- 在瞻博网络安全连接应用中验证基于 SAML 的用户身份验证
- 验证 SAML 断言缓存条目
- 验证特定于用户的 AAA 统计信息
- 验证 SAML 身份验证统计信息
- 验证 IKE SA
- 验证 IPsec SA
- 验证 IKE 活动对等方
在瞻博网络安全连接应用中验证基于 SAML 的用户身份验证
目的
使用基于 SAMl 的用户身份验证连接瞻博网络安全连接应用,以便远程访问 VPN。
行动
在客户端上执行以下步骤:
将证书颁发机构证书放在客户端笔记本电脑中,位于
C:\ProgramData\Juniper\SecureConnect\cacerts。以 或
https://srx1.juniper.net/jsc-saml的身份https://172.16.1.254/jsc-saml输入连接配置文件。然后点击 连接 切换按钮以建立 VPN 连接。系统下载配置后,您会看到一个窗口, “用于 SAML 认证的用户 ID”,提示您输入 SAML 用户 ID。在 “用户 ID ”字段中输入您的 SAML 用户 ID,作为
user1@srx1.example.net。系统会将您重定向到默认浏览器中的 IdP SSO URL。输入用户名
user1@srx1.example.net和正确的密码。成功完成用户身份验证后,接受浏览器弹出窗口以启动瞻博网络安全连接应用。
当 IKE 连接在后台运行时,关闭浏览器。
观察到瞻博网络安全连接应用建立远程访问 VPN 连接。
意义
通过基于 SAML 的用户身份验证方法对用户 user1@srx1.example.net 进行身份验证,并建立远程访问 VPN 连接。请注意,用户名采用 IdP 的强制属性映射中定义的电子邮件格式。
验证 SAML 断言缓存条目
user@vsrx> show network-access aaa saml assertion-cache Username Remaining Validity user1@srx1.example.net 6h 52m 40s
目的
运行命令以显示 SAML 断言缓存条目。
行动
在作模式下,对 vSRX 运行命令 show network-access aaa saml assertion-cache 。
意义
显示 SAML 身份验证断言、使用访问配置文件 IdP 设置中配置的域名和 SAML 身份验证用户名的缓存信息。
验证特定于用户的 AAA 统计信息
user@vsrx> show network-access aaa subscribers Username Logical system/Routing instance Client type Session-ID user1@srx1.example.net default:default xauth 6
目的
运行命令以显示订阅者用户名。
行动
在作模式下,对 vSRX 运行命令 show network-access aaa subscribers 。
意义
显示有关活动订阅者会话的信息。
验证 SAML 身份验证统计信息
user@vsrx> show network-access aaa statistics saml
SAML Authentication statistics
Authentication request received 21
Authentication response sent 21
Request hit cache 0
Request sent to IdP 6
Assertion received 5
Assertion timeout 1
Assertion parse fail 0
Assertion sanity fail 0
Assertion signature verify fail 0
Assertion decryption fail 0
Assertion node missing 0
Assertion attributes missing 0
Assertion username mismatch 0
Logout request received 0
Logout response sent 0
Logout parse fail 0
Logout sanity fail 0
Logout signature verify fail 0
Memory allocation fail 0
目的
运行命令以显示 SAML 身份验证统计信息。
行动
在作模式下,对 vSRX 运行命令 show network-access aaa statistics saml 。
意义
显示 SAML 身份验证统计信息。
验证 IKE SA
user@vsrx> show security ike security-associations Index State Initiator cookie Responder cookie Mode Remote Address 1 UP a5872b7d9c649c0b 3264d25485c6827a IKEv2 172.17.1.1
目的
运行命令以显示有关 IKE 安全关联 (SA) 的信息。
行动
在作模式下,对 vSRX 运行命令 show security ike security-associations 。
意义
将防火墙的 IKE 模式显示为 IKEv2,并具有 172.17.1.1 的 SA,即瞻博网络安全连接客户端。
验证 IPsec SA
user@vsrx> show security ipsec security-associations Total active tunnels: 1 Total IPsec sas: 1 ID Algorithm SPI Life:sec/kb Mon lsys Port Gateway <500001 ESP:aes-gcm-256/aes256-gcm 0xdb912536 3429/ unlim - root 10954 172.17.1.1 >500001 ESP:aes-gcm-256/aes256-gcm 0x52a3f7de 3429/ unlim - root 10954 172.17.1.1
目的
运行命令以显示有关 IPsec SA 的信息。
行动
在作模式下,对 vSRX 运行命令 show security ipsec security-associations 。
意义
显示防火墙有一个使用 172.17.1.1 的活动 IPsec 隧道 SA,即瞻博网络安全连接客户端。
验证 IKE 活动对等方
user@vsrx> show security ike active-peer Remote Address Port Peer IKE-ID AAA username Assigned IP 172.17.1.1 10954 ra@example.com user1@srx1.example.net 10.1.3.10
目的
运行命令以显示连接的 IKE 对等方。
行动
在作模式下,对 vSRX 运行命令 show security ike active-peer 。
意义
显示防火墙有一个活动的 IKE 对等方 172.17.1.1,即瞻博网络安全连接客户端。防火墙还会显示对等方 IKE ID 以及分配给用户的经过身份验证的远程用户名和 IP 地址。
附录 1:瞻博网络安全连接故障排除
如果遇到基于 SAML 的用户身份验证的任何问题,请按照以下步骤解决问题:
- 该功能适用于 iked 进程。确保使用命令
request system software add optional://junos-ike.tgz安装 junos-ike 软件包。 - 启用 PKI、IKE、IPsec 和远程访问选项的跟踪选项。例如,运行命令
set security pki traceoptions file pki.log以在 PKI 上启用 traceoptions。检查系统日志和追踪日志。 - 检查 SAML 断言缓存是否已禁用。如果禁用了 SAML 断言缓存,我们建议启用它来缓存来自 IdP 的 SAML 断言。请参阅 saml-options。
- 确保断言缓存包含用户的有效条目。断言缓存必须包含有效的用户条目,以支持基于 SAML 的用户身份验证。如果缓存没有有效条目,请在瞻博网络安全连接应用中执行手册断开并重新连接 VPN 连接。此作会提示应用程序再次对用户进行身份验证并重新填充断言缓存。请参阅 show network-access aaa saml assertion-cache。
- 如果系统日志报告
AUTHD_SAML_AUTH_FAILED是由于断言等待超时,请使用命令set access saml service-provider yoursaml assertion-waittime waittime延长断言超时。 - 要重新加载 IdP 元数据,请参阅请求网络访问 aaa saml load-idp-metadata。
- 若要导出服务提供商元数据,请参阅请求网络访问 aaa saml export-sp-metadata。
- 如果您发现 IKE 会话超时,请使用命令
set security ike session half-open timeout timeout延长会话。
附录 2:在 vSRX 上设置命令
在 vSRX 上设置命令输出。
set interfaces ge-0/0/0 unit 0 family inet address 10.1.1.254/24 set interfaces st0 unit 0 family inet set interfaces ge-0/0/1 unit 0 family inet address 172.16.1.254/24 set security zones security-zone trust host-inbound-traffic system-services all set security zones security-zone trust host-inbound-traffic protocols all set security zones security-zone trust interfaces ge-0/0/0.0 set security zones security-zone untrust host-inbound-traffic system-services all set security zones security-zone untrust host-inbound-traffic protocols all set security zones security-zone untrust interfaces ge-0/0/1.0 set security zones security-zone VPN interfaces st0.0 set security policies from-zone trust to-zone trust policy default-permit match source-address any set security policies from-zone trust to-zone trust policy default-permit match destination-address any set security policies from-zone trust to-zone trust policy default-permit match application any set security policies from-zone trust to-zone trust policy default-permit then permit set security policies from-zone trust to-zone untrust policy default-permit match source-address any set security policies from-zone trust to-zone untrust policy default-permit match destination-address any set security policies from-zone trust to-zone untrust policy default-permit match application any set security policies from-zone trust to-zone untrust policy default-permit then permit set security policies from-zone trust to-zone VPN policy JSC-ALLOW-OUT match source-address any set security policies from-zone trust to-zone VPN policy JSC-ALLOW-OUT match destination-address any set security policies from-zone trust to-zone VPN policy JSC-ALLOW-OUT match application any set security policies from-zone trust to-zone VPN policy JSC-ALLOW-OUT then permit set security policies from-zone VPN to-zone trust policy JSC-ALLOW-IN match source-address any set security policies from-zone VPN to-zone trust policy JSC-ALLOW-IN match destination-address any set security policies from-zone VPN to-zone trust policy JSC-ALLOW-IN match application any set security policies from-zone VPN to-zone trust policy JSC-ALLOW-IN then permit set security nat source rule-set jsc from zone VPN set security nat source rule-set jsc to zone trust set security nat source rule-set jsc rule 1 match source-address 0.0.0.0/0 set security nat source rule-set jsc rule 1 then source-nat interface set security ike proposal JSC-IKE-PRO authentication-method rsa-signatures set security ike proposal JSC-IKE-PRO dh-group group19 set security ike proposal JSC-IKE-PRO authentication-algorithm sha-256 set security ike proposal JSC-IKE-PRO encryption-algorithm aes-256-cbc set security ike policy JSC-IKE-POL proposals JSC-IKE-PRO set security ike policy JSC-IKE-POL certificate local-certificate IKE-KEY set security ike gateway JSC-GW dynamic user-at-hostname "ra@example.com" set security ike gateway JSC-GW dynamic ike-user-type shared-ike-id set security ike gateway JSC-GW ike-policy JSC-IKE-POL user@vsrx# set security ike gateway JSC-GW version v2-only set security ike gateway JSC-GW external-interface ge-0/0/1 set security ike gateway JSC-GW local-address 172.16.1.254 set security ike gateway JSC-GW dead-peer-detection optimized set security ike gateway JSC-GW dead-peer-detection interval 10 set security ike gateway JSC-GW dead-peer-detection threshold 5 set security ike gateway JSC-GW aaa access-profile JSC-ACCESS set security ike gateway JSC-GW tcp-encap-profile JSC-ENCAP set security ipsec proposal JSC-IPSEC-PRO protocol esp set security ipsec proposal JSC-IPSEC-PRO encryption-algorithm aes-256-gcm set security ipsec policy JSC-IPSEC-POL proposals JSC-IPSEC-PRO set security ipsec policy JSC-IPSEC-POL perfect-forward-secrecy keys group19 set security ipsec vpn JSC-VPN bind-interface st0.0 set security ipsec vpn JSC-VPN df-bit clear set security ipsec vpn JSC-VPN ike gateway JSC-GW set security ipsec vpn JSC-VPN ike ipsec-policy JSC-IPSEC-POL set security ipsec vpn JSC-VPN traffic-selector ts-1 local-ip 10.1.1.1/32 set security ipsec vpn JSC-VPN traffic-selector ts-1 remote-ip 0.0.0.0/0 set security remote-access profile jsc-saml ipsec-vpn JSC-VPN set security remote-access profile jsc-saml access-profile JSC-ACCESS set security remote-access profile jsc-saml client-config JSC-CLIENT set security remote-access client-config JSC-CLIENT connection-mode manual set security remote-access client-config JSC-CLIENT dead-peer-detection interval 60 set security remote-access client-config JSC-CLIENT dead-peer-detection threshold 5 set security remote-access client-config JSC-CLIENT no-eap-tls set access profile JSC-ACCESS authentication-order saml set access profile JSC-ACCESS saml service-provider vsrx-jsc set access profile JSC-ACCESS saml identity-provider srx1.example.net idp-name example-idp set access profile JSC-ACCESS saml identity-provider any idp-name example-idp set access profile JSC-ACCESS address-assignment pool JSC-POOL set access address-assignment pool JSC-POOL family inet network 10.1.3.0/24 set access address-assignment pool JSC-POOL family inet range JSC-RANGE low 10.1.3.10 set access address-assignment pool JSC-POOL inet range JSC-RANGE high 10.1.3.20 set access address-assignment pool JSC-POOL family inet xauth-attributes primary-dns 8.8.8.8/32 set access firewall-authentication web-authentication default-profile JSC-ACCESS set services ssl termination profile JSC-SSL-PRO server-certificate jsc set security tcp-encap profile JSC-ENCAP ssl-profile JSC-SSL-PRO set security tcp-encap profile JSC-ENCAP log set access saml service-provider vsrx-jsc entity-id https://srx1.example.net set access saml service-provider vsrx-jsc assertion-waittime 60 set access saml identity-provider example-idp settings entity-id http://www.example.org/abcd1234 set access saml identity-provider example-idp settings single-signon-url https://5075942.example.org/app/5075942_srx1examplenet_1/abcd1234/sso/saml set access saml identity-provider example-idp settings single-logout-url https://5075942.example.org set access saml identity-provider example-idp settings idp-certificate EXAMPLE-CA set access saml identity-provider example-idp attribute-mapping username mail mandatory
附录 3:在 vSRX 上显示配置输出
在 vSRX 上显示命令输出。
在配置模式下,输入以下命令以确认您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
[edit]
user@vsrx# show interfaces
ge-0/0/0 {
unit 0 {
family inet {
address 10.1.1.254/24;
}
}
}
ge-0/0/1 {
unit 0 {
family inet {
address 172.16.1.254/24;
}
}
}
st0 {
unit 0 {
family inet;
}
}
[edit]
user@vsrx# show security zones
security-zone trust {
host-inbound-traffic {
system-services {
all;
}
protocols {
all;
}
}
interfaces {
ge-0/0/0.0;
}
}
security-zone untrust {
host-inbound-traffic {
system-services {
all;
}
protocols {
all;
}
}
interfaces {
ge-0/0/1.0;
}
}
security-zone VPN {
interfaces {
st0.0;
}
}
[edit]
user@vsrx# show security policies
from-zone trust to-zone trust {
policy default-permit {
match {
source-address any;
destination-address any;
application any;
}
then {
permit;
}
}
}
from-zone trust to-zone untrust {
policy default-permit {
match {
source-address any;
destination-address any;
application any;
}
then {
permit;
}
}
}
from-zone trust to-zone VPN {
policy JSC-ALLOW-OUT {
match {
source-address any;
destination-address any;
application any;
}
then {
permit;
}
}
}
from-zone VPN to-zone trust {
policy JSC-ALLOW-IN {
match {
source-address any;
destination-address any;
application any;
}
then {
permit;
}
}
}
[edit]
user@vsrx# show security nat
source {
rule-set JSC-NAT {
from zone VPN;
to zone trust;
rule 1 {
match {
source-address 0.0.0.0/0;
}
then {
source-nat {
interface;
}
}
}
}
}
[edit]
user@vsrx# show system services
…
web-management {
https {
pki-local-certificate jsc-web;
}
}
[edit]
user@vsrx# show security pki
ca-profile EXAMPLE-CA {
ca-identity EXAMPLE-CA;
revocation-check {
disable;
}
}
ca-profile CERTAUTH {
ca-identity CERTAUTH;
revocation-check {
disable;
}
}
[edit]
user@vsrx# show security ike
proposal JSC-IKE-PRO {
authentication-method rsa-signatures;
dh-group group19;
authentication-algorithm sha-256;
encryption-algorithm aes-256-cbc;
}
policy JSC-IKE-POL {
proposals JSC-IKE-PRO;
certificate {
local-certificate IKE-CERT;
}
}
gateway JSC-GW {
ike-policy JSC-IKE-POL;
dynamic {
user-at-hostname "ra@example.com";
ike-user-type shared-ike-id;
}
dead-peer-detection {
optimized;
interval 10;
threshold 5;
}
external-interface ge-0/0/1;
local-address 172.16.1.254;
aaa {
access-profile JSC-ACCESS;
}
version v2-only;
tcp-encap-profile JSC-ENCAP;
}
[edit]
user@vsrx# show security ipsec
proposal JSC-IPSEC-PRO {
protocol esp;
encryption-algorithm aes-256-gcm;
}
policy JSC-IPSEC-POL {
perfect-forward-secrecy {
keys group19;
}
proposals JSC-IPSEC-PRO;
}
vpn JSC-VPN {
bind-interface st0.0;
df-bit clear;
ike {
gateway JSC-GW;
ipsec-policy JSC-IPSEC-POL;
}
traffic-selector ts-1 {
local-ip 10.1.1.1/32;
remote-ip 0.0.0.0/0;
}
}
[edit]
user@vsrx# show security tcp-encap
profile JSC-ENCAP {
ssl-profile JSC-SSL-PRO;
log;
}
[edit]
user@vsrx# show services
ssl {
termination {
profile JSC-SSL-PRO {
server-certificate jsc;
}
}
}
[edit]
user@vsrx# show security remote-access
profile jsc-saml {
ipsec-vpn JSC-VPN;
access-profile JSC-ACCESS;
client-config JSC-CLIENT;
}
client-config JSC-CLIENT {
connection-mode manual;
dead-peer-detection {
interval 60;
threshold 5;
}
no-eap-tls;
}
[edit]
user@vsrx# show access
profile JSC-ACCESS {
authentication-order saml;
address-assignment {
pool JSC-POOL;
}
saml {
service-provider vsrx-jsc;
identity-provider srx1.example.net {
idp-name example-idp;
}
identity-provider any {
idp-name example-idp;
}
}
}
address-assignment {
pool JSC-POOL {
family inet {
network 10.1.3.0/24;
range jsc-range {
low 10.1.3.10;
high 10.1.3.20;
}
xauth-attributes {
primary-dns 8.8.8.8/32;
}
}
}
}
saml {
service-provider vsrx-jsc {
entity-id https://srx1.example.net;
assertion-waittime 60;
}
identity-provider example-idp {
settings {
entity-id http://www.example.org/abcd1234;
single-signon-url https://5075942.example.org/app/5075942_srx1examplenet_1/abcd1234/sso/saml;
single-logout-url https://5075942.example.org;
idp-certificate EXAMPLE-CA;
}
attribute-mapping {
username mail mandatory;
}
}
}
firewall-authentication {
web-authentication {
default-profile JSC-ACCESS;
}
}