我正在尝试使用 idsrv3 接收由 ADFS 外部公司颁发的令牌,因此 idsrv3 作为服务提供者而 ADFS 作为身份提供者。我正在使用 Ws-Fed(被动)协议,因此公司已经添加了我们的端点和应该与令牌一起发布的声明。
我通过 URL https://adfsapp.companydomain.com/adfs/ls/idpinitiatedsignon.aspx进行了登录请求,并在引入凭据后对用户进行身份验证,并使用 SAMLResponse 重定向到 idsrv3 端点。
按照 idsrv3 文档,我在应用程序中配置了身份提供程序。( https://identityserver.github.io/Documentation/docsv2/configuration/identityProviders.html )
private static void AddExternalProvider(IAppBuilder app, string signInAsType, AdfsWsFederationExternalProvider provider)
{
var metadataAddress = ""https://adfs.leastprivilege.vm/federationmetadata/2007-06/federationmetadata.xml";
var manager =
new SyncConfigurationManager(new ConfigurationManager<WsFederationConfiguration>(metadataAddress));
var providerId = provider.ExternalProviderId;
var options = new WsFederationAuthenticationOptions
{
AuthenticationType = providerId,
Caption = provider.ExternalProviderName,
SignInAsAuthenticationType = signInAsType,
CallbackPath = new PathString("/" + providerId),
ConfigurationManager = manager,
Wtrealm = provider.Wtrealm,
};
app.UseWsFederationAuthentication(options);
}
但是令牌没有经过验证,所以我有以下问题:
1- 我应该声明一个代币处理程序来处理 STS 公司发行的代币吗?
2- 回调路径“/providerId”将自动处理令牌?
3-如何知道端点(“/providerId”)是否正在等待传入的令牌?
谢谢你的帮助。