javascript - docker 容器上解析服务器的自定义身份验证 (OAuth2)

标签 javascript docker parse-platform docker-compose parse-server

因此,正如标题所示,我正在寻找一种方法将我自己的自定义身份验证服务集成到安装在 docker 容器内的解析服务器中。这种身份验证基本上是 KeyCloak 的 OpenID 实现。

重点是我没有(对我的架构来说最好不要)在我的本地机器上使用 express 提供解析服务器。

到目前为止,我一直在尝试搜索互联网、阅读问题、阅读 JavaScript 的解析服务器文档和指南以及其他内容,以找出如何实现它。

似乎不管我做什么,在每次测试结束时,我都会得到一个252 This authentication method is unsupported错误! (即使我使用 facebookoauthoauth2 等也会发生这种情况)。

所以现在,docker-compose 服务看起来像这样:

    parse-server:
        image: parseplatform/parse-server
        ports:
            - "${SERVER_PORT}:1337"
        restart: "always"
        volumes:
            - ./server/parse/custom-auth:/parse-server/custom-auth
        depends_on: 
            - mongodb
        links:
            - mongodb:mongo
        environment:
            - PARSE_SERVER_APPLICATION_ID=${APP_ID}
            - PARSE_SERVER_MASTER_KEY=${MASTER_KEY}
            - PARSE_SERVER_DATABASE_URI=mongodb://mongo:${MONGO_PORT}/dev
            - PARSE_SERVER_START_LIVE_QUERY_SERVER=1
            - PARSE_SERVER_LIVE_QUERY={"classNames":${LIVE_QUERY_CLASSES}}
            - PARSE_SERVER_MOUNT_GRAPHQL=${GQL_API}
            - PARSE_SERVER_MOUNT_PLAYGROUND=${GQL_PLAYGROUND}
            - PARSE_SERVER_AUTH_PROVIDERS={"swwwan-mail-auth":{"module":"/parse-server/custom-auth/swwwan-mail-auth/index.js"}}

和登录/注册部分:

export const loginWithParse = async (account: IUserColumnTypes) => {
    if (account.username === null || account.password === null) {
        throw "validation failed";
    }

    // @ts-ignore
    const loggedIn = await Parse.User.logInWith("swwwan.mail-auth", {
        authData: {
            id: "",
            access_token: "",
        },
    });

    console.log({ loggedIn });

    //return await Parse.User.logIn(account.username, account.password);
};

登录/注册的另一种选择:

export const loginWithParse = async (account: IUserColumnTypes) => {
    if (account.username === null || account.password === null) {
        throw "validation failed";
    }

    const u = new Parse.User();

    u._linkWith("swwwan-mail-auth", {
        authData: {
            id: "tester",
            access_token: "sample_access_token",
        },
    })
    .then(res => console.log(res))
    .catch(e => console.log(e));

    //return await Parse.User.logIn(account.username, account.password);
};

更新:通过使用第二种选择,我实际上得到了错误:

error: Parse error: Invalid key name: authData.swwwan-mail-auth.id {"code":105,"stack":"Error: Invalid key name: authData.swwwan-mail-auth.id

有没有办法让它工作?可能我在这里遗漏了一些东西。

发送:)

最佳答案

  1. 请注意,链接函数中的“悬挂”将在即将发布的 2.9 release 中弃用。解析 JS SDK

  2. 抱歉,文档还没有改进。将得到更多的工作

  3. 您正在尝试的是可行的!

  4. 您的最后一个错误提供了一条重要线索:您的适配器名称不能包含任何对 javascript 标识符无效的字符。在这种情况下,- 引起了问题,因为当我们将它保存在数据库中时,适配器名称用作键。

单元测试通常是最好的文档,您可能会发现它们在这种情况下很有帮助。

参见:

关于javascript - docker 容器上解析服务器的自定义身份验证 (OAuth2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433154/

相关文章:

node.js - 在 alpine 上从源代码安装 node.js

javascript - 将关系查询数据添加到主 JSON 结果

android - ParseFile.cancel() 不工作 - 文件一直在下载

javascript - Twitter个人资料图片 uploader 如何在客户端显示图片预览

JavaScript:先按数字然后按字母对数组字符串进行排序

javascript - 如何在为每个项目呈现图表之前等待所有项目在 ng-repeat 中加载

kernel - 在 docker 容器中安装新的 gentoo 内核

docker - Kitematic docker : "-D start default returned non zero exit code..."

javascript - 将项目附加到获取的项目数组解析云代码

javascript - Firebase Web 代码实验室 : missing app configuration value "appId"