繁体   English   中英

使用 Azure AD 的用户名和密码进行本地 ADFS 身份验证(SharePoint-Online)

[英]On-Prem ADFS Authentication with username and password to Azure AD (SharePoint-Online)

我想针对 On-Prem ADFS Server 2019 使用用户名和密码对服务用户进行身份验证。然后使用提供的令牌在用户上下文中访问 SharePoint-Online 站点。 这应该是单点登录 (SSO) 流程。 在我的尝试中,我收到“AADSTS50013:断言签名验证失败”错误。

On-Prem 应用注册配置如下: ADFS 本地应用程序注册

然后我使用 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发送了一个请求,其中 header 签名无效。

因此,我还尝试通过向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:断言签名验证失败”。 Saml 令牌转换

我的想法是,On-Prem AD 与 Azure AD 同步。 但错误看起来我需要向 Azure AD 添加额外的签名证书。

  1. 我需要在 Azure 中单独配置这个证书吗?
  2. 还是我需要将此 Saml-Token 转换为不同的?

我的方法的第一个问题是使用本地应用程序注册。 我们想要访问 Azure 中的资源,因此我们需要在 Azure AD 中注册应用程序。

第二个问题似乎是 MSAL 库的问题,因为我们通过WithAdfsAuthority(authority)获得的 JWT 令牌不能用于针对 Azure 的身份验证。 因此,我们首先需要手动从本地 ADFS 获取 SAML 令牌。 然后使用格式为 XML 的 SAML 令牌并将其发送到$"https://login.microsoftonline.com/{tenantID}/oauth2/v2.0/token" 我找到了一个博客,其中详细记录了所有这些步骤: https://blogs.aaddevsup.xyz/2020/06/using-postman-to-request-an-azure-ad-token-via-saml-assertion-grant -流动/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM