Yur*_*nko 5 authentication node.js keycloak nestjs
我需要在 NestJS 和 GraphQL (type-graphql) 中使用 keycloak。有一些使用纯 Express 的指南,但我更喜欢使用 NestJS 身份验证模式。有人可以给任何建议吗?
这是一个老问题,但由于我刚刚实现了它,我想指出一个很棒的教程Protecting your NestJS API with Keycloak。它不使用passport
,而只是调用 Keycloak 上的 OpenId Connect UserInfo 端点:https ://openid.net/specs/openid-connect-core-1_0.html#UserInfo 。
我发现添加到应用程序非常容易,非常容易遵循,而且通常非常有用(与我之前使用的未命名的 SaaS 应用程序相比)。
async authenticate(accessToken: string): Promise<User> {
const url = `${this.baseURL}/realms/${this.realm}/protocol/openid-connect/userinfo`;
try {
const response = await this.httpService.get<KeycloakUserInfoResponse>(url, {
headers: {
authorization: `Bearer ${accessToken}`,
},
}).toPromise();
return {
id: response.data.sub,
username: response.data.preferred_username,
};
} catch (e) {
throw new AuthenticationError(e.message);
}
}
Run Code Online (Sandbox Code Playgroud)
我自己从未尝试过,但我想我很快就会尝试。我会怎么做:
我希望这可能会帮助你。在一天结束时,您将使用 KeyCloak 实现 Passport 的 OpenID 实现,并且可以使用警卫来保护您的路线/方案。
归档时间: |
|
查看次数: |
3566 次 |
最近记录: |