Angular-auth-oidc-client开发者必备:API参考与自定义存储策略全解析
Angular-auth-oidc-client开发者必备:API参考与自定义存储策略全解析
angular-auth-oidc-client是一个用于 Angular 的 OpenID Connect 身份验证客户端库,适合为 Angular 应用添加 OpenID Connect 身份验证功能,支持多种身份提供商,具有高可扩展性和易用性。
核心 API 功能速览 🚀
用户信息与认证状态管理
OidcSecurityService 提供了丰富的 API 用于获取用户数据和认证状态:
-
userData$: 提供用户登录后的信息,返回
UserDataResult对象,包含userData和allUserData字段。在单配置下直接通过userData获取用户信息,多配置时需从allUserData按configId查询。this.userData$ = this.oidcSecurityService.userData$; -
isAuthenticated$: 返回认证状态
Observable<AuthenticatedResult>,单配置下直接判断isAuthenticated,多配置时通过allConfigsAuthenticated数组查看各配置的认证状态。
认证流程控制
-
checkAuth(): 启动完整认证流程,解析 STS 回调 URL 并设置认证状态,返回
LoginResponse包含令牌和用户数据。this.oidcSecurityService.checkAuth().subscribe(({ isAuthenticated, accessToken }) => { // 处理认证结果 }); -
authorize()/authorizeWithPopUp(): 重定向或弹窗方式发起登录,支持自定义参数和配置 ID。
-
logoff()/logoffLocal(): 服务端注销或本地会话清除,支持多配置场景。
令牌管理工具
- getAccessToken()/getIdToken(): 获取访问令牌和 ID 令牌,支持按配置 ID 查询。
- forceRefreshSession(): 手动刷新会话,返回新的令牌信息。
- revokeAccessToken()/revokeRefreshToken(): revoke 令牌,符合 RFC7009 标准。
自定义存储策略实现 🔧
默认情况下,库使用 sessionStorage 存储认证数据。如需自定义存储(如 localStorage 或加密存储),可实现 AbstractSecurityStorage 接口:
1. 创建自定义存储服务
import { AbstractSecurityStorage } from 'angular-auth-oidc-client';
@Injectable()
export class MyStorageService implements AbstractSecurityStorage {
read(key: string): string | null {
return localStorage.getItem(key); // 使用 localStorage
}
write(key: string, value: string): void {
localStorage.setItem(key, value);
}
remove(key: string): void {
localStorage.removeItem(key);
}
clear(): void {
localStorage.clear();
}
}
2. 注册自定义存储
在应用配置中提供自定义存储类:
// 独立组件模式
export const appConfig: ApplicationConfig = {
providers: [
provideAuth({ /* 配置 */ }),
{ provide: AbstractSecurityStorage, useClass: MyStorageService },
],
};
// NgModule 模式
@NgModule({
imports: [AuthModule.forRoot({ config: { /* 配置 */ } })],
providers: [{ provide: AbstractSecurityStorage, useClass: MyStorageService }],
})
export class AuthConfigModule {}
高级使用场景 📚
多配置管理
支持同时集成多个身份提供商,通过 configId 参数区分不同配置:
// 获取特定配置的用户数据
this.oidcSecurityService.getUserData('configId2').subscribe(userData => {
// 处理多配置用户数据
});
静默刷新与会话检查
- checkAuthIncludingServer(): 使用 iframe 静默检查服务端会话状态(仅适用于 iframe 静默刷新模式)。
- checkSessionChanged$: 监听会话变更事件,及时响应服务端状态变化。
官方文档与资源
- 完整 API 参考:public-api.md
- 自定义存储指南:custom-storage.md
- 配置示例:sample-code-flow-auth0
通过灵活运用上述 API 和存储策略,开发者可以轻松实现符合 OAuth2/OpenID Connect 标准的身份验证功能,满足不同场景下的安全需求。
更多推荐




所有评论(0)