GraphQL 请求 401 Unauthorized with OAuth2 Bearer token in Liferay

问题描述

问题解决了!

我之所以能够与服务交互,是因为我没有添加带有 OAUTH2_ 的服务访问策略策略来授予对所需服务的访问权限。

问题 我正在使用 Liferay 7.3 GA6,使用 OAuth 2 管理面板,我已将应用程序配置为下图。 OAuth2 application definition in Liferay 7.3

在范围选项卡中,我已授予所有可用权限。

然后我尝试执行以下 graphql 调用。

  1. 获取oauth2令牌(成功)

    curl --location --request POST 'https://my_host/o/oauth2/token'
    --header '内容类型:应用程序/x-www-form-urlencoded'
    --data-urlencode 'client_id=id1234'
    --data-urlencode 'client_secret=secret1234'
    --data-urlencode 'grant_type=password'
    --data-urlencode 'username=email_address'
    --data-urlencode '密码=密码'

我用假数据替换了真实数据。

此操作成功,我获得了访问令牌和刷新令牌。

  1. 调用 graphql 操作(失败)

    curl --location --request POST 'https://my_host/o/graphql'
    --header '授权:承载 9c7222375513be53a5ef5be5471961d9a3627c1e27ab8aceb92edc43218ea'
    --header '内容类型:应用程序/json'
    --data-raw '{"query":"{\n site(siteKey: "38413"){\n id\n name\n }\n}","variables":{}}'

阅读文档我看到访问令牌应该通过授权标头传递。无论如何我得到以下错误

{
    "errors": [
        {
            "message": "Exception while fetching data (/site) : java.lang.SecurityException: Access denied to com.liferay.portal.kernel.service.GroupService#getGroup","locations": [],"errorType": "DataFetchingException","path": null,"extensions": {
                "exception": {
                    "errno": 401
                },"code": "Unauthorized"
            }
        }
    ],"data": {
        "site": null
    }
}

有人可以帮我吗?

谢谢, 格拉齐亚诺

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)