使用authentication.getPrincipal()

时间:2019-06-20 10:10:30

标签: spring-boot spring-mvc spring-security amazon-cognito

我正在将spring-boot / security与AWS Cognito集成在一起。用户成功登录,aws cognito将用户名,权限和用户属性发送到我的spring应用程序。问题是我无法使用jackson-databind json或yaml将返回的数据检索或映射到java类/对象。我需要从返回的数据中提取用户的电子邮件。这是cognito发送到我的应用程序的示例数据。

名称:[aaXXXXX-38af-XXXX-XXXX-b5497XXXXX78],授予的权限:[ROLE_USER],用户属性:[at_hash = Hfqq0tGXXXXXXXXGlRQ,sub = XXXXXX-38af-XXXX-ba30-b549XXX​​XX278,aud = [5XXXXXoXXXXXX948k email_verified = true,token_use = id,auth_time = 1561024200,iss = https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xOXUWQCE3,cognito:username = aaXXXXX-38af-XXXX-XXXX-b5497XXXXX78,exp = 2019-06-20T10:50:00Z,iat = 2019- 06-20T09:50:00Z,email = rohitksethi @ gmail.com,用户名= aaXXXXX-38af-XXXX-XXXX-b5497XXXXX78]

尝试过杰克逊绑定yml和json,但都无法解析返回的数据

身份验证身份验证= SecurityContextHolder.getContext()。getAuthentication();

    ObjectMapper oMapper = new ObjectMapper(new YAMLFactory());
    oMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    CustomUserDetail user = oMapper.readValue(authentication.getPrincipal().toString(), CustomUserDetail.class);

发生意外错误(类型=内部服务器错误,状态= 500)。 在“阅读器”第1行第1列中解析块映射时,名称:[aa90e2b6-xxxxx-xxxx-ba30-b ... ^预期,但在“阅读器”第1行第45列中找到了“,”: ... 2b6-xxxxf-xxxx-ba30-bxxxxxx278],授予的权限:[ROLE_USE ... ^,位于[来源:(StringReader);行:1,列:45] com.fasterxml.jackson.dataformat.yaml.snakeyaml.error.MarkedYAMLException:解析块映射时  在“阅读器”的第1行,第1列:     名称:[aa90e2b6-38af-43d6-ba30-b ...     ^ 预期,但找到了','  在“阅读器”的第1行第45列中:      ... 2b6-xxxx-xxxx-ba30-bxxxxxxx78],授予的权限:[ROLE_USE ...

0 个答案:

没有答案