import { Component, Inject, OnInit } from '@angular/core';
import { PLATFORM_ID } from '@angular/core';
import { isPlatformBrowser } from '@angular/common';
import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
import { Client } from '@microsoft/microsoft-graph-client';
import { SecretService } from '../../shared/secret.service';
import { AdalService } from 'ng2-adal/services/adal.service';
@Component({
selector: 'my',
templateUrl: './my.component.html'
})
export class MyComponent implements OnInit {
isBrowser: boolean;
private graphClient: Client;
private userProfile: any;
constructor(
@Inject(PLATFORM_ID) platformId: Object,
private adalService: AdalService,
private secretService: SecretService) {
this.isBrowser = isPlatformBrowser(platformId);
adalService.init(secretService.adalConfig);
// Don't initialize graph client in server-side-rendering
if (this.isBrowser) {
this.graphClient = Client.init({
authProvider: (done) => {
done(undefined, this.adalService.getCachedToken(this.secretService.adalConfig.clientId));
}
});
}
}
get isLoggedIn(): boolean {
if (!this.isBrowser)
return false;
return this.adalService.userInfo.isAuthenticated;
}
ngOnInit() {
// Fast exit on server-side-rendering
if (!this.isBrowser)
return;
// Initialize ADAL service
this.adalService.handleWindowCallback();
this.adalService.getUser();
// If we are already logged in (cause reply url is called from login)
// use Graph API to get some data about the current user
if (this.isLoggedIn) {
this.graphClient.api('/me').get().then((value) => {
this.userProfile = value;
}).catch((error) => {
// Currently I'm always getting here, but never in the above then() call.
console.log(error);
});
}
}
onLogin() {
this.adalService.login();
}
onLogout() {
this.adalService.logOut();
}
}
<md-toolbar>
<md-toolbar-row>
<button color="primary" md-button *ngIf="!isLoggedIn" (click)="onLogin()">
Login
</button>
<button color="accent" md-button *ngIf="isLoggedIn" (click)="onLogout()">
Logout
</button>
</md-toolbar-row>
</md-toolbar>
<md-card>
<md-card-content>
<section>
{{userProfile}}
</section>
</md-card-content>
</md-card>
根据代码,您使用从Azure Ad发出的id_token调用了Microsoft图形。要调用Microsoft图形,我们需要使用access_token,它的访问群体应该是https://Graph.Microsoft.com
。
您需要使用如下代码获取Microsoft图形的access_token:
this.adalService.acquireToken("https://graph.microsoft.com").subscribe(function(token){
this.graphClient = Client.init({
authProvider: (done) => {
done(undefined, token);
}
});
有关Microsoft Graph身份验证的详细信息,请参阅下面的链接:
获取访问令牌以调用Microsoft Graph
我正在写一个小小的短信网关,供几个项目使用, 我实现了laravel passport身份验证(客户端凭据授予令牌) 然后,我向api中间件组添加了: 逻辑工作正常,现在在我的控制器中,我需要让客户机与有效令牌关联。 routes.php 出于明显的安全原因,我无法将客户端id与消费者请求一起发送,例如,
我已经在本地机器中配置了minikube,并打算在外部使用kubernetes。我在kubernetes中创建了一个服务帐户,使用它的秘密,我可以使用下面的命令获得访问令牌。 我正在以贝娄启动配置。 我能知道如何使用fabric8 java客户端获得上面描述的serviceAccountAccessToken吗?
我编写了一个控制台ASP.NET应用程序来获取AccessTokens。我有clientId,我的应用程序的客户端秘密,我做了以下操作: var authContext=新的AuthenticationContext(“https://login.windows.net/common/oauth2/authorize”);var acquireTask=authContext.AcquireTok
我在这里有点迷路,需要一些直接的请。我是新来Java,这是我试图写的第一个程序,显然与它斗争了一个月左右。因此,目前我们使用邮递员输入客户端ID/秘密从第三方应用编程接口获得访问令牌,使用该令牌我们可以从第三方的另一个终端请求资源。我正在尝试引用多个资源,如此Spring安全示例https://github.com/spring-projects/spring-security/blob/mast
我的主要目的是通过单个管理员访问令牌获取用户的日历。我正在尝试按照以下步骤获取访问令牌。 URL:https://login.microsoftonline.com/{tenentId}/oaust2/v2.0/令牌正文client_id:client_ID范围:https://graph.microsoft.com/.defaultclient_secret:client_secretIDgra
我已经创建了一个webapp类型的Azure AAD应用程序,它具有客户端秘密和重定向URL。现在,我想获得一个访问令牌代表用户使用AAD应用程序。通过查看文档,到目前为止,我得到了以下代码。 但这是我在尝试获取用户令牌时得到的错误,如下所示。 消息“AADSTS70002:请求正文必须包含以下参数:'Client_Secret或Client_Assertion'。\r\n跟踪ID:0E977F6