Dik*_*cha 7 javascript node.js passport.js passport-saml nestjs
我正在尝试使用 Okta 作为身份提供者和passport-saml 库在我的Nest.js 应用程序中创建SSO。我阅读了 Nest 认证和passport-saml 的文档。我对示例的理解没有问题,但我确实需要使用具有不同配置的 SAML 策略,这些配置取决于 POST 的请求正文值api/auth/saml。换句话说,我有一个策略,但对于扩展Nest.js 的PassportStrategy 类的自定义LoginSSOStrategy 类,我有不同的入口点、颁发者、证书参数。任何想法我该如何处理?
我不太确定这是否是一个好方法,但如果您愿意,您可以将类请求范围限定并通过构造函数注入请求,然后访问请求对象并能够使用新的实例您的护照策略每个要求。您可以使用请求传递req.whatever给super()类的构造函数。
@Injectable({ scope: Scope.REQUEST })
export class LoginSSOStrategy exends PassportStrategy(Strategy) {
constructor(@Inject(REQUEST) request: Request, ...) {
super({/* options matching to request.field */});
}
validate(/* validate params*/) {
/* validate functionality */
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎是您需要进行大量测试并确保它可以处理并发请求的事情,但总的来说,至少在理论上它是可以工作的。