【问题标题】:Getting access token live time from program从程序中获取访问令牌的实时时间
【发布时间】:2019-08-28 19:14:14
【问题描述】:

我正在写一个基于此的 Accesstoken Builder msf4j example。我对角色等进行了一些过滤。我正在使用 wso2is 5.8 我尝试访问为服务提供者设置的 AccessTokenValidityPeriod。 在我的服务提供商设置中,我增加了“用户访问令牌到期时间”、“应用程序访问令牌到期时间”和“ID 令牌到期时间”。

我可以从 identity.xml 文件中访问令牌生命周期的值,但我想查找此服务提供者的具体设置。 我的代码是这样的

private long getLifetimeInMillis(OAuthAuthzReqMessageContext reqMessageContext, OAuthTokenReqMessageContext ctx) {
        long lifetimeInMillis = -1;
        if (reqMessageContext != null) {
            log.debug("Get lifetime from OAuthAuthzReqMessageContext property");
            lifetimeInMillis = reqMessageContext.getAccessTokenValidityPeriod(); 
/* always returns 0
... */  

但这总是返回 0。 我已经调试了 OAuthAuthzReqMessageContext 类,但只有构造函数被称为而不是设置器 setAccessTokenValidityPeriod。 我的 pom.xml 包含:

  <dependency>
            <groupId>org.wso2.carbon.identity.framework</groupId>
            <artifactId>org.wso2.carbon.identity.application.authentication.framework</artifactId>
            <version>5.12.387</version>
        </dependency>

        <dependency>
            <groupId>org.wso2.carbon.identity.inbound.auth.oauth2</groupId>
            <artifactId>org.wso2.carbon.identity.oauth</artifactId>
            <version>6.0.168</version>
            <scope>provided</scope>
        </dependency>

【问题讨论】:

  • 您能否添加更多有关您提到的 msf4j 示例以及您要实现的用例的信息?
  • 我添加了一些信息。希望对您有所帮助。

标签: wso2is


【解决方案1】:

如果您的要求是获取访问令牌有效期,请使用以下方法。

OAuth2AuthorizeReqDTO authorizationReqDTO=reqMessageContext.getAuthorizationReqDTO();

SpOAuth2ExpiryTimeConfiguration spTimeConfigObj = OAuth2Util.getSpTokenExpiryTimeConfig(authorizationReqDTO..getConsumerKey(), IdentityTenantUtil.getTenantId(authorizationReqDTO.getUser().getTenantDomain()));

validityPeriodInMillis = spTimeConfigObj.getUserAccessTokenExpiryTime();

谢谢

【讨论】:

  • getSpTokenExpiryTimeConfig() 被标记为已弃用,并且 SpOAuth2ExpiryTimeConfiguration 仅包含空值。
【解决方案2】:

如果您想在 WSO2 Identity Server 中使用 JWT 访问令牌,则无需在最新版本中编写任何自定义代码。 OAuth2/OIDC 配置有这个选项可以配置。请参阅所附屏幕截图的底部。所以你一开始就不需要 JWTAccessTokenBuilder。

【讨论】:

  • 我尝试将 jwt 令牌配置为描述的 [link] (docs.wso2.com/display/IS580/…) 但这不起作用。你能指出一个如何正确配置它的例子吗?我希望令牌包含带域的密钥(f.e.smartfacts.com/claims/ID)。此外,如果用户是许多组中的成员,我想过滤组以减少令牌大小,并将组名从 Application/MIDAdmin 转换为 MIDAdmin。
  • 由于 oidc 有明确定义的用户属性名称,您不能使用其他名称。您可以从角色和权限部分进行应用程序 - idp 角色映射。
猜你喜欢
  • 2020-12-07
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 2020-01-06
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
相关资源
最近更新 更多