启用SSO的ServiceNow中无弹窗生成含用户断言的Azure AD OAuth令牌
ServiceNow无弹窗生成含用户断言的OAuth令牌(支持OBO流)
核心解决方向
要避免登录/账户选择弹窗,核心是让ServiceNow复用用户已有的Azure AD SSO会话,直接生成带用户断言的令牌,跳过交互式授权流程。
具体配置操作
1. 优化OAuth应用注册表
- 打开已创建的「连接到第三方OAuth提供商」应用注册表,进入高级设置:
- 勾选「允许使用现有用户会话获取令牌」(部分版本字段可能为
Use existing session for token retrieval),让ServiceNow优先复用当前用户的SSO会话。 - 确认回调URL为ServiceNow官方端点:
https://<你的实例域名>.service-now.com/oauth_callback.do,确保Azure AD能正确回调令牌。
- 勾选「允许使用现有用户会话获取令牌」(部分版本字段可能为
2. 调整REST消息的OAuth认证参数
- 在REST消息的OAuth2.0配置中,添加额外参数:
- 新增键值对:
prompt=none,这个参数会告知Azure AD不触发交互式登录,直接使用现有会话生成令牌。 - 勾选「使用会话凭据」(
Use session credentials),确保ServiceNow基于当前登录用户的身份生成用户断言。
- 新增键值对:
3. 确认Azure AD端的OBO权限配置
- 在Azure AD门户中,找到ServiceNow对应的应用注册:
- 添加委派权限,目标为你要调用的外部API,并完成管理员同意(若权限需要)。
- 确保ServiceNow应用注册的「清单」中
oauth2AllowImplicitFlow或oauth2AllowIdTokenImplicitFlow配置正确,支持用户断言传递。
4. 验证无弹窗流程
- 以已通过Azure AD SSO登录的用户身份触发REST调用:
- 正常情况下,ServiceNow会直接从现有会话提取用户信息,向Azure AD请求带OBO断言的Bearer Token,不会弹出任何窗口。
- 可通过ServiceNow的
系统日志 > 应用日志查看令牌生成日志,确认令牌中包含on_behalf_of相关断言内容。
常见问题排查
- 若仍弹出窗口,检查以下几点:
- 用户的SSO会话是否有效:在ServiceNow中进入
用户 > 会话管理,确认当前用户会话状态正常。 - Azure AD是否强制二次认证:若用户MFA过期或需要重新验证,
prompt=none会失效,需先让用户完成认证。 - ServiceNow的SSO设置:确保「SSO用户跳过登录页面」选项已开启,避免用户进入ServiceNow时需二次选择账户。
- 用户的SSO会话是否有效:在ServiceNow中进入
内容的提问来源于stack exchange,提问作者tidyomnivore
相关产品推荐
相关产品推荐

