我正在尝试使用 Okta 作为身份提供者和 passport-saml 库在我的 Nest.js 应用程序中创建 SSO。我阅读了 Nest authentication 和 passport-saml 的文档。我对示例的理解没有问题,但我确实需要使用具有不同配置的 SAML 策略,这取决于 POST api/auth/saml
的请求正文值.换句话说,我有一个策略,但有不同的 入口点、颁发者、证书 我的自定义参数 登录SSOStrategy类扩展 Passport 策略类 Nest.js 的。任何想法我该如何处理?
最佳答案
我不太确定这是否是一个好方法,但是如果您愿意,您可以将类请求限定为范围并通过构造函数注入(inject)请求,然后可以访问请求对象并能够使用的新实例您的 Passport 策略每个请求。您可以使用请求传递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 */
}
}
这似乎是您需要进行大量测试并确保它适用于并发请求的事情,但总的来说它至少在理论上是可行的。
关于javascript - 具有不同配置的相同 Passport js 策略 (SAML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59249525/