【发布时间】:2021-05-16 12:24:43
【问题描述】:
我想针对 On-Prem ADFS Server 2019 使用用户名和密码对服务用户进行身份验证。然后使用提供的令牌在用户上下文中访问 SharePoint-Online 站点。这应该是单点登录 (SSO) 流程。在我的尝试中,我得到“AADSTS50013:断言签名验证失败”-错误。
然后我使用 MSAL C# 库来获取令牌,如下所示:
var authority = "https://adfs.MYCOMPANY.net/adfs";
IPublicClientApplication app = PublicClientApplicationBuilder.Create(clientID)
.WithAdfsAuthority(authority)
.WithTenantId(tenantID)
.WithRedirectUri(RedirectUri)
.Build();
// convert password to SecureString
var securePassword = new SecureString();
foreach (char c in password) securePassword.AppendChar(c);
// Request Token
var result = app.AcquireTokenByUsernamePassword(scopes, username, securePassword).ExecuteAsync().Result;
var token = result?.AccessToken;
这将导致 On-Prem ADFS 发出“有效”令牌(jwt.io 屏幕截图):
下一步是使用此令牌访问 SharePoint-Online 资源。但这会导致错误。出于测试目的,我向https://TENANT.sharepoint.com/_api/web/currentuser 发送了一个请求,标题为“Authorization=Bearer eyJ0...”,但它失败并显示“令牌包含无效签名”。
所以我还尝试通过向https://login.microsoftonline.com/7fc3a154-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/token 发送请求来将 SAML 令牌转换为不同的 JWT 令牌。我在 Azure 中为此请求创建了一个单独的应用注册,但我无法在应用注册上启用 SSO,如下所述:https://docs.microsoft.com/en-us/azure/active-directory/manage-apps/add-application-portal-setup-sso。所以下面的请求仍然给我一个“AADSTS50013:断言签名验证失败”。
我的想法是,本地 AD 与 Azure AD 同步。但错误看起来我需要向 Azure AD 添加额外的签名证书。
- 我需要在 Azure 中单独配置此证书吗?
- 或者我是否需要将此 Saml-Token 转换为其他令牌?
【问题讨论】:
标签: c# azure-active-directory single-sign-on saml-2.0 adfs