如何将联合身份验证器作为索赔发送给我的服务提供商?
SP想要知道使用了哪一个对主题进行身份验证。是否有本地IS声明可以发回SP?
我已经知道总是退回身份提供者的经过身份验证的列表,但是我需要发送声明。
谢谢。
答案 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;
}