Auth0 SSO Angular 返回 WebpackOk

Posted

技术标签:

【中文标题】Auth0 SSO Angular 返回 WebpackOk【英文标题】:Auth0 SSO Angular returns WebpackOk 【发布时间】:2017-12-21 21:42:40 【问题描述】:

我正在开发一个使用 Auth0 来处理用户的 Angular 应用程序。我期待一种同时使用两个客户端的方法。如果我有两个 JWT 没关系。我在 Auth0 中看到了有关单点登录 (SSO) 的信息。我已经实现了它,但它不起作用。

@Injectable()
export class AuthService 
    auth0js = new auth0.WebAuth(
        domain: 'domain.com',
        clientID: 'clientID',
        scope: 'openid name picture groups permissions roles',
        responseType: 'token id_token',
        redirectUri: 'http://localhost:4200'
    );

    auth0js2 = new auth0.WebAuth(
        domain: 'domain2.com',
        clientID: 'clientID2',
        scope: 'openid name picture groups permissions roles',
        responseType: 'token id_token',
        redirectUri: 'http://localhost:4200'
    );

    profile: any;
    profile$ = new BehaviorSubject<any>(this.profile);

    constructor(
        private notificationService: NotificationService,
        private router: Router,
        private _ngZone: NgZone)
    

    public login(): void 
        this.auth0js.authorize();
    

    public handleAuthentication(): void 
        const self = this;
        self.auth0js.parseHash( _idTokenVerification: false , (err, authResult) => 
            if (authResult && authResult.accessToken && authResult.idToken) 
                window.location.hash = '';
                self.setSession(authResult);
                self._ngZone.runOutsideAngular(() => 
                    self.renew();
                );
             else if (err) 
                self.router.navigate(['/home']);
                console.log(err);
            
        );
    

    renew() 
        const self = this;
        self.auth0js2.renewAuth(
        audience: 'domain.com/api/v2/',
        scope: 'openid name picture groups permissions roles',
        redirectUri: 'localhost:4200',
        usePostMessage: true, function (err, authResult) 
            if (err) 
                alert(`Could not get a new token using silent authentication ($err.error). Redirecting to login page...`);
                self.auth0js2.authorize();
             else 
                console.log('AUTH', authResult);
                self.setSession2(authResult);
            
        );
    

    private setSession(authResult): void 
        const expiresAt = JSON.stringify((authResult.expiresIn * 1000) + new Date().getTime());
        localStorage.setItem('access_token', authResult.accessToken);
        localStorage.setItem('id_token', authResult.idToken);
        localStorage.setItem('expires_at', expiresAt);
    

    private setSession2(authResult): void 
        // Here I've got type: "webpackOk", data: undefined as authResult
        // Set the time that the access token will expire at
        const expiresAt = JSON.stringify((authResult.expiresIn * 1000) + new Date().getTime());
        localStorage.setItem('access_token2', authResult.accessToken);
        localStorage.setItem('id_token2', authResult.idToken);
        localStorage.setItem('expires_at2', expiresAt);
        
    

当我进行静默身份验证时,我会收到以下响应:

type: "webpackOk": data: undefined

【问题讨论】:

你解决了吗? 【参考方案1】:

它是这样工作的

   setTimeout(function () 
          iframe.contentWindow.postMessage(data, '*')
        , 1000)

【讨论】:

但是为什么当我们这样做时它会起作用?这有助于我解决我的问题。添加更多详细信息

以上是关于Auth0 SSO Angular 返回 WebpackOk的主要内容,如果未能解决你的问题,请参考以下文章

使用 Auth0 SSO 集成 Salesforce 和 Angular 应用程序

使用 Auth0 在 Angular 应用程序中进行 SSO 集成

如何在没有 Angular 的 Cordova 中实现 Auth0 SSO

Auth0 Angular parseHash 返回未定义

如何使用 Discourse 和 Auth0 执行 SSO?

Sugarcrm 和 Auth0 SSO 启用