【问题标题】:.net ADAL Acquire Token for application without a user.net ADAL 为没有用户的应用程序获取令牌
【发布时间】:2019-07-07 13:31:56
【问题描述】:

我正在尝试在没有当前用户的情况下获取应用程序的令牌。我收到一条错误消息:

e.Message = "缓存中未找到令牌,无法静默获取令牌。调用方法 AcquireToken"

下面是我用来获取令牌的代码。

ClientCredential clientcred = new ClientCredential(clientId, appKey);
AuthenticationContext authenticationContext = new AuthenticationContext(aadInstance + tenantId);
AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenSilentAsync(graphResourceID, clientId);

return authenticationResult.AccessToken;

我的版本是:

有人可以帮忙解决这个问题吗?我已经尝试了好几天了...我可以在为当前用户获取令牌时找到一个令牌,但是当我有后台进程(例如从应用程序发送电子邮件而没有经过身份验证)时用户我无法获得令牌。

我的 Microsoft Graph 应用注册下的安全设置“应用程序 - 从任何用户发送电子邮件”但我不认为它会走那么远。 Windows Azure AD 上的安全性已委托 - 登录并阅读用户配置文件。

谢谢

【问题讨论】:

  • 抱歉,直到发布该版本未粘贴后才意识到:Microsoft.IdentityModel.Clients.ActiveDirectory 是 4.5.1 版

标签: c# .net adal azure-ad-graph-api


【解决方案1】:

我已经弄清楚了令牌部分。因此,对于正在寻找此 google 创建 X509 证书并将其添加到您的 Azure Manifest 的任何其他人。然后您可以使用 x509 证书创建 ClientAssertionCertificate。然后在对 AuthenticationContext.AcquireTokenAsync 的调用中使用 clientassertion。这似乎有效。我可以创建一个graphServiceClient。但是,当我尝试发送电子邮件时,出现权限错误:

用于提交此请求的用户帐户无权代表指定的发送帐户发送邮件。无法提交邮件。

尽管有权限申请 - 以任何用户身份发送邮件。有人有什么想法吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-27
    • 2019-08-31
    • 2019-05-15
    • 2016-01-04
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多