asp.net mvC语言 使WsFederation身份验证无效



我正在使用OWIN WsFederation对用户进行身份验证,我想获取一个声明并执行额外的检查,看看这个唯一的用户id是否位于数据库中以供访问。如果没有,我希望将用户重定向到显示消息的视图。我订阅了一个通知"SecurityTokenValidated",在这个通知中,我将获取声明并检查用户是否存在。根据我的理解,SecurityTokenValidated是在cookie创建后调用的,所以这可能太晚了。

我如何重定向用户到一个视图,让他们知道他们没有访问权?

app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
    {
    Wtrealm = AppSettings.IdpRealm,
    MetadataAddress = AppSettings.IdpMetadata,                 
    Notifications = new WsFederationAuthenticationNotifications
    {
        // check and create additional claims
        SecurityTokenValidated = notification =>
        {
            // identity object to access claims from IDP
            var identity = notification.AuthenticationTicket.Identity;
            // get claim and check database

            return Task.FromResult<object>(null);
        }
    }
});

可以抛出异常来阻止身份验证流。像这样

throw new System.IdentityModel.Tokens.SecurityTokenValidationException();

在异常处理程序中,向用户添加一条友好消息。

相关内容

最新更新