当前位置: 首页 > 知识库问答 >
问题:

Express-OpenID-连接TypeScript

卫弘义
2023-03-14

我试图使用这个库(express-openid-connect)为身份验证后端提供“简单的设置”,但在从express.request调用oidc对象时,我遇到了一个简单的错误:

app.get("/", (req: express.Request, res: express.Response) => {
    res.send(req.oidc.isAuthenticated() ? "Hi user" : "Hi guest");
});

当然,我得到了这个错误:

interface OIDRequest extends express.Request {
    oidc: OpenidRequest
}

app.get("/", (req: OIDRequest, res: express.Response) => {
    res.send(req.oidc.isAuthenticated() ? "Hi user" : "Hi guest");
});

没有重载匹配此调用。

重载4中的1“(Path:PathParams,...Handlers:RequestHandler []):Express”,出现以下错误。

类型“(req:OIDRequest,res:express.response)=>void”的参数不可赋给类型“requestHandler ”的参数。

重载4中的2“(Path:PathParams,...Handlers:RequestHandlerParams []):Express”,出现以下错误。

类型“(req:OIDRequest,res:express.response)=>void”的参数不可赋给类型“requestHandlerParams ”的参数。

类型“(req:OIDRequest,res:express.response)=>void”不能分配给类型“requestHandler ”。

重载4中的3“(path:PathParams,subapplication:Application):express”,导致以下错误。

类型“(req:OIDRequest,res:express.response)=>void”的参数不能赋值给类型“application”的参数。

类型“(req:OIDRequest,res:Response)=>void”缺少类型“application”中的下列属性:init、defaultConfiguration、engine、set和其他61个。ts(2769)

import express from 'express';
import { auth, ConfigParams, OpenidRequest } from 'express-openid-connect';

require('dotenv').config();

const app = express();

const config: ConfigParams = {
    authRequired: false,
    auth0Logout: true,
    issuerBaseURL: process.env.ISSUER_BASE_URL,
    baseURL: process.env.BASE_URL,
    clientID: process.env.CLIENT_ID,
    secret: process.env.SECRET,
};

app.use(auth(config));

interface OIDRequest extends express.Request {
    oidc: OpenidRequest
}

app.get("/", (req: OIDRequest, res: express.Response) => {
    res.send(req.oidc.isAuthenticated() ? "Hi user" : "Hi guest");
});

app.get("/profile", (req: express.Request, res: express.Response) => {
    res.json(req.oidc.user);
});

const port = process.env.PORT || 8080;
app.listen(port, () => {
    console.log(`Listening to port: ${port}`);
});

在我问这里之前,我找到了一些答案,但这些对这种情况不起作用。如何从express.request对象调用OIDC

共有1个答案

曹恩
2023-03-14

我们最近切换到express-openid-connect并不得不使用此方法与OIDC交互。

    app.get('/api/me', async (req, res) => {
        const userInfo = await req['oidc']?.fetchUserInfo();
        res.json({
            info: req['oidc']?.user,
            userInfo
        });
    });
 类似资料:
  • 题目中的问题相当简单。internet上的所有教程都讨论了OpenID Connect在。NET核心中的实现。我目前的项目是在ASP.NET MVC(不是ASP.NET核心)中开发的,我需要在其中实现OpenID Connect。 我跟踪这个帖子,并试图,但没有运气! 任何关于这方面的帮助/澄清将不胜感激。

  • 使用OpenAM OpenID连接代理,我创建了一个名为Test-Client的OAuth 2.0/OpenID连接客户端,其作用域为openid。 我的OpenAM实例部署在Tomcat 7上,我调整了/etc/hosts文件,将localhost显示为OpenAM。实例通用域名格式。 使用默认凭据,我可以使用以下方式检索OpenID Connect id令牌: 然后,如果我的承载令牌仍然有效,

  • 我正在尝试弄清楚如何使用WSO2身份服务器为SSO设置我的应用程序。我的用例是我有 2 个应用程序由使用 WSO2IS 的 OAuth/OpenId Connect 保护。如果我已登录到应用程序 1,则启动应用程序 2 应该会自动登录。流程应该是什么? 目前,我已经创建了2个服务提供商,每个应用程序一个。每个服务提供者入站身份验证配置都是使用OAuth/OpenId Connect配置的。我还需要

  • 我不确定在实施过程中应该采取哪种方法,需要一些指导。 我在Yii2框架(PHP)中构建了一个RESTAPI(API.mysite.com),用于访问mysite中的数据。com(数据库)。在mysite上。com我们的用户将能够创建连接的应用程序,该应用程序将提供客户端id机密-授予对其帐户的访问权限(全范围?)。 根据我的研究,下一步似乎是设置一些东西来实际提供传递给api的承载令牌-我一直倾向

  • 我一直在广泛阅读有关OAuth和OpenID Connect的内容,但此问题专门涉及OAuth2资源所有者密码授予(又名OAuth2资源所有者凭据授予,又名OAuth2密码授予) 某些资源(例如Justin Richer的《OAuth2 in Action》一书)说不要使用OAuth2资源所有者密码授予进行身份验证-请参阅书中的第6.1.3节。 以下其他好资源都说我们可以使用OAuth2资源所有者