2 回答
TA贡献1825条经验 获得超6个赞
找到解决方法:通过 REST API 获取令牌。在这里,我可以获得用户令牌或客户端令牌来访问图形 api:
var client = new RestClient("https://login.microsoftonline.com/" + domainname);
var request = new RestRequest("/oauth2/token", Method.POST); request.AddBody("grant_type", "client_credentials");
request.AddParameter("client_id", clientId);
request.AddParameter("client_secret", clientSecret);
request.AddParameter("Resource", "https://graph.microsoft.com");
request.AddParameter("scope", "[scopes]");
IRestResponse response = client.Execute(request);
//contains the token
var content = response.Content;
TA贡献1796条经验 获得超4个赞
根据您的描述,我假设您需要一个解决方案来验证用户而无需任何交互。
我们可以通过一些后台服务或守护进程获取访问令牌。
更多细节,我们可以参考这个文档。
根据我的测试,我们可以尝试以下步骤:
首先,我们应该得到管理员的同意:
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 });
然后,我们可以使用此访问令牌来使用 Graph API。
有关更多详细信息,我们可以查看GitHub 上的v2.0 守护程序示例。
- 2 回答
- 0 关注
- 183 浏览
添加回答
举报