How to integrate passport authentication without express web app?
Los mantenedores suelen responder en 4 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- node.js, react, typescript
- Área
- api, authentication, backend
Línea de trabajo
Comienza leyendo el ejemplo passport-login y los archivos referenciados src/controllers/oauth2.controller.ts y src/authentication-strategy-providers/twitter.express-mv.ts; después, sigue cómo están conectadas la devolución de llamada de OAuth y las opciones de sesión. El trabajo estará terminado cuando exista un enfoque de autenticación confirmado para un cliente React separado sin el error de sesión informado, junto con una prueba reproducible o una guía de integración documentada.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
I have my front-end separated from my loopback application and I am trying to implement authentication through passport.
However I receive the following error (after it is making a GET request to https://myapi.com/auth/thirdparty/twitter):
Request GET /auth/thirdparty/twitter failed with status code 500. InternalServerError: Error: OAuth authentication requires session support. Did you forget to use express-session middleware?
The only adjustment I have made is to remove the web-application folder from the loopback-passport example repository.
I then tried to integrate it with my React JS application.I made slight modifications to the src/controllers/oauth2.controller.ts:
@authenticate('oauth2')
@get('/auth/thirdparty/{provider}')
/**
* This method uses the @authenticate decorator to plugin passport strategies independently
*
* Endpoint: '/auth/thirdparty/{provider}'
* an endpoint for api clients to login via a third party app, redirects to third party app
*/
loginToThirdParty(
@param.path.string('provider') provider: string,
@inject(AuthenticationBindings.AUTHENTICATION_REDIRECT_URL)
redirectUrl: string,
@inject(AuthenticationBindings.AUTHENTICATION_REDIRECT_STATUS)
status: number,
@inject(RestBindings.Http.RESPONSE)
response: Response,
) {
return {redirectUrl: redirectUrl};
}
@oAuth2InterceptExpressMiddleware()
@get('/auth/thirdparty/{provider}/callback')
/**
* This method uses the passport strategies as express middleware
*
* Endpoint: '/auth/thirdparty/{provider}/callback'
* an endpoint which serves as a oauth2 callback for the thirdparty app
* this endpoint sets the user profile in the session
*/
async thirdPartyCallBack(
@param.path.string('provider') provider: string,
@inject(SecurityBindings.USER) user: UserProfile,
@inject(RestBindings.Http.REQUEST) request: Request,
@inject(RestBindings.Http.RESPONSE) response: Response,
) {
// const profile = {
// ...user.profile,
// };
// request.session.user = profile;
// response.redirect('/auth/account');
return response;
}
In src/authentication-strategy-providers/twitter.express-mv.ts I also tried to set session to false:
@injectable.provider({scope: BindingScope.SINGLETON})
export class TwitterOauthExpressMiddleware implements Provider<ExpressRequestHandler> {
constructor(
@inject('twitterStrategy')
public twitterStrategy: TwitterStrategy,
) {
passport.use(this.twitterStrategy);
}
value() {
return passport.authenticate('twitter',{session: false});
}
}
but unfortunately no luck.
Any support is welcome!
Logs
No response
Additional information
No response
Reproduction
- Lenguaje dominante
- TypeScript
- Estrellas
- 5.1k
- Forks
- 1.1k
- Merge medio
- 5 d 9 h
- PR fusionados (30 d)
- 28
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de loopbackio/loopback-next
-
Docs good first issue help wanted
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
loopbackio/loopback-next#683 · 3 comentarios ·
Los mantenedores suelen responder en 4 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
loopbackio/loopback-next#11726 ·
Los mantenedores suelen responder en 4 días
-
bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
loopbackio/loopback-next#11500 · 1 comentario · 1 reacción ·
Los mantenedores suelen responder en 4 días
-
@param.array throws INVALID_PARAMETER_VALUE:must be string if more than 20 elements are sentAbiertobug
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
loopbackio/loopback-next#11412 · 1 comentario ·
Los mantenedores suelen responder en 4 días
-
Query parameter array parsing broken for >20 items after qs upgrade (CVE fix side effect)Quizá libre de nuevo @KauanAfonso la tomó hace 121 días y no hay ningún pull request abierto. Abiertobug help wanted
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
loopbackio/loopback-next#11396 · 2 comentarios · 1 reacción ·
Los mantenedores suelen responder en 4 días
Todos los issues de loopbackio/loopback-next
Issues similares
-
Add: CanalPlusActionEurope.nlAbiertocheck:passed streams:add
Dificultad 1/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 2 días
-
beta technical-medium ui
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
walletbeat/walletbeat#1625 ·
Los mantenedores suelen responder en 1 día
-
[Good First Issue]: Add unit tests for NetworkVersionInfoPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. AbiertoGood First Issue hacktoberfest
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
hiero-ledger/hiero-sdk-js#4489 ·
Los mantenedores suelen responder en 1 día
-
[Bug] The clients language filter cannot select the rows the page labels as unknownPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
apache/rocketmq-dashboard#6103 ·
Los mantenedores suelen responder en 4 días
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
payloadcms/payload#18652 ·
Los mantenedores suelen responder en 1 día