重用先前WSO2AM版本的现有应用程序令牌

重用先前WSO2AM版本的现有应用程序令牌,wso2,access-token,wso2-am,Wso2,Access Token,Wso2 Am,我目前正在从头开始设置WSO2 am 3.2.0的一个新实例,因为从版本2.1升级和迁移并没有按预期工作。为了避免给当前用户带来任何不便,我希望继续为每个应用程序使用现有的消费者密钥和消费者密钥,这样从2.1过渡到3.2时访问令牌不会改变 假设在版本2.1中使用的consumer\u key:consumer\u secret是:original\u key:original\u secret 当然,在AM 3.2实例I中创建新应用程序时,要获取一个新的秘密,比如new\u key:new\u

我目前正在从头开始设置WSO2 am 3.2.0的一个新实例,因为从版本2.1升级和迁移并没有按预期工作。为了避免给当前用户带来任何不便,我希望继续为每个应用程序使用现有的
消费者密钥
消费者密钥
,这样从2.1过渡到3.2时
访问令牌
不会改变

假设在版本2.1中使用的
consumer\u key:consumer\u secret
是:
original\u key:original\u secret

当然,在AM 3.2实例I中创建新应用程序时,要获取一个新的秘密,比如
new\u key:new\u secret
。为了继续使用原来的组合,我创建了AM 3.2数据库的转储,在这个转储中,我只是将新的
consumer\u密钥
consumer\u secret
替换为如下原始密钥:

sed-i's/new\u key/original\u key/g'dump.sql
sed-i's/new\u secret/original\u secret/g'dump.sql

然后我用这个修改过的转储文件替换了现有的3.2数据库。重新启动AM 3.2后,我可以看到应用程序实际上正在使用原始的
消费者密钥
消费者密钥
,但当我生成
访问令牌
时,它与我实际想要复制的原始
访问令牌
不同


我知道我的方法相当肮脏,但我想知道为什么它不起作用。对于我的问题,是否有什么我错过了——甚至更好的——一个干净的解决方案?

获取不同访问令牌的原因是apim 3.2.0默认只支持JWT令牌,在2.1.0中它只支持不透明令牌。我相信您通过上述令牌调用获得的JWT令牌与不透明令牌不同

在上述方法中,您将丢失以前2.1.0设置中的以下数据

API和工件相关信息。 应用程序属性+现有活动令牌+作用域 保留在现有平台中的用户

但是,如果您只想用客户机id和secret复制应用程序,那么更好的方法如下所示

使用Devportal REST API

  • 使用开发门户RESTAPI创建应用程序[1]。提供参数时,如果要获取不透明令牌,请将令牌类型指定为OAUTH
  • 使用映射密钥资源映射客户端id密钥对[2]
  • 我希望以上内容对您有所帮助

    [1]
    [2]

    我遵循步骤[1],使用API成功创建了一个令牌类型为OAUTH的新应用程序。但是devportal仍然告诉我应用程序的令牌类型是自包含(JWT)。API响应还包含
    “tokenType”:“JWT”,
    。这是一个错误,类型实际上是OAUTH,还是不起作用?这种情况下,不透明令牌在3.2.0版本中受支持,但在默认情况下被禁用。它仅支持迁移的应用程序。您可以执行以下操作。导航至碳纤维控制台。并通过服务提供商配置打开应用程序。请参考屏幕截图。然后选择令牌类型作为默认值,它应该将JWT类型更改为不透明。很抱歉,请问您在第一个屏幕截图中导航到的路径是什么?面包屑不可见。是
    Home>Identity>Service Providers>List-然后是rest\u api\u devportal
    ?哦,现在我明白了。我忘了为我的应用程序创建密钥,现在我在
    Home>Identity>serviceproviders>List
    下看到了应用程序的条目。请在映射之前尝试生成密钥。应该创建一个服务提供商条目,用于将密钥映射到现有密钥。2.确保您已在屏幕截图中将令牌颁发者更改为默认值,那么只有您才能生成不透明令牌。3.即使我们更改了令牌颁发者,开发门户也不会将令牌类型显示为Oauth,因为默认情况下不支持不透明令牌。由于可能会有平台迁移到3.2.0版本,因此启用不透明令牌的这些调整仍然存在。