如何使用Microsoft图形使用匿名用户帐户获取访问令牌?

时间:2018-08-21 06:09:33

标签: microsoft-graph

在我的.NET MVC项目中,如果用户登录系统,他将收到他的电子邮件,并且系统稍后将发送欢迎电子邮件。

我的问题是我不希望每个用户都登录并通过授权过程来获取他的个人信息,例如电子邮件,用户名。

考虑到以上情况,经过研究,我发现Microsoft图形可以帮助我解决我的情况。但是我不确定在哪里挖。

有人可以帮我怎么做吗?

1 个答案:

答案 0 :(得分:1)

根据this reference,我们可以从某些后台服务或守护程序获取访问令牌。

根据我的测试,我们可以尝试以下步骤: 首先,我们应该征得管理员的同意:

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
                                           {
                                               ClientId = clientId,
                                               Authority = authority,
                                               RedirectUri = redirectUri,
                                               PostLogoutRedirectUri = redirectUri,
                                               Scope = "openid profile",
                                               ResponseType = "id_token",
                                               TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = false, NameClaimType = "name" },
                                               Notifications = new OpenIdConnectAuthenticationNotifications
                                                               {
                                                                   AuthenticationFailed = this.OnAuthenticationFailedAsync,
                                                                   SecurityTokenValidated = this.OnSecurityTokenValidatedAsync
                                                               }
                                           });

ConfidentialClientApplication daemonClient = new ConfidentialClientApplication(Startup.clientId, string.Format(AuthorityFormat, tenantId), Startup.redirectUri,
                                                                                       new ClientCredential(Startup.clientSecret), null, appTokenCache.GetMsalCacheInstance());
AuthenticationResult authResult = await daemonClient.AcquireTokenForClientAsync(new[] { MSGraphScope });

第二,我们可以通过来自以下网址的电子邮件获取用户:https://graph.microsoft.com/v1.0/users/{email address}。例如,https://graph.microsoft.com/v1.0/users/xxx.outlook.com

然后,我们可以像这样使用API​​:POST https://graph.microsoft.com/v1.0/{user id | userPrincipalName}/sendMail,为此,我们可以参考Send mail

有关更多详细信息,我们可以从GitHub上的v2.0 daemon sample下载该版本。