WSO2是联合身份验证器声明

时间:2019-11-22 18:40:23

标签: wso2 wso2is

如何将联合身份验证器作为索赔发送给我的服务提供商?

SP想要知道使用了哪一个对主题进行身份验证。是否有本地IS声明可以发回SP?

我已经知道总是退回身份提供者的经过身份验证的列表,但是我需要发送声明。

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以编写一个处理索赔映射的自定义索赔处理程序,并将其部署到IS服务器中。您可以遵循本文档并创建自定义索赔处理程序https://docs.wso2.com/display/IS580/Writing+a+Custom+Claim+Handler。您可以从AuthneticatedUser对象[1]获取federatedIdpName。

下面提供了示例代码。

public Map<String, String> handleClaimMappings(StepConfig stepConfig,
                                               AuthenticationContext context, Map<String, String> remoteAttributes,
                                               boolean isFederatedClaims) throws FrameworkException {

    String authenticatedUser = null;

    if (stepConfig != null) {
        //calling from StepBasedSequenceHandler
        authenticatedUser = stepConfig.getAuthenticatedUser();
    } else {
        //calling from RequestPathBasedSequenceHandler
        authenticatedUser = context.getSequenceConfig().getAuthenticatedUser();
    }

    Map<String, String> claims = handleExternalClaims(authenticatedUser);
    return claims;
}

private Map<String, String> handleExternalClaims(AuthenticatedUser authenticatedUser) throws FrameworkException {

    Map<String, String> externalClaims = new HashMap<String, String>();
    externalClaims.put("http://test.org/claims/idpName", authenticatedUser.getFederatedIdPName());
    return externalClaims;
}

[1] https://github.com/wso2/carbon-identity-framework/blob/master/components/authentication-framework/org.wso2.carbon.identity.application.authentication.framework/src/main/java/org/wso2/carbon/identity/application/authentication/framework/model/AuthenticatedUser.java#L49