Tag: office365

图Api – 401未经授权

刚开始使用图形/办公室API,哇,这是一个雷区! 只是想知道是否有人可以给我任何建议? 当我尝试联系https://graph.microsoft.com/beta/me/files时,我得到401。 我的JWT如下: { “aud”: “https://graph.windows.net/”, “iss”: “https://sts.windows.net/916970f4-e570-4036-a353-8ae647af1d3e/”, “iat”: 1444794383, “nbf”: 1444794383, “exp”: 1444798283, “ver”: “1.0”, “tid”: “916970f4-e570-4036-a353-8ae647af1d3e”, “oid”: “c454b826-612f-4525-8995-87f1a24dc3df”, “sub”: “c454b826-612f-4525-8995-87f1a24dc3df”, “idp”: “https://sts.windows.net/916970f4-e570-4036-a353-8ae647af1d3e/”, “appid”: “568d0906-4131-4b97-8b08-9efdbe1636c4”, “appidacr”: “1” } 我的令牌以一种相当奇怪的方式被获取…我有一个web项目azure AD,谁的令牌用于获取web api Azure Ad令牌,然后该令牌用于生成图api jwt,如上所示。 下面是怎么回事:

如何同步等待’AuthenticationContext.AcquireTokenAsync()’?

首先,我不确定这是否重要,但由于@ Simon Mourier在他回答中提到的原因,我正在使用ADAL的EXPERIMENTAL版本, 这个 。 在下面的代码中,我想同步检索AuthenticationResult ,因此,我将等待AcquireTokenAsync方法以同步方式完成身份validation的AcquireTokenAsync 。 这是因为在授权完成后应该设置一个布尔标志( isAuthorized = true ),但是tg需要以同步的方式发生,因为如果没有,那么我可以调用该类的其他方法,这将引发一个空引用,因为对AcquireTokenAsync的调用没有完成,因此对象为null。 以下代码不起作用,该方法永远不会返回,因为对AcquireTokenAsync方法的调用似乎无限期地冻结了该线程。 C#(由于在线翻译,可能是错误的语法): public void Authorize() { // Use the ‘Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory’ Nuget package for auth. this.authContext = new AuthenticationContext(this.authUrl, this.cache); this.authResult = this.authContext.AcquireTokenAsync({ “https://outlook.office.com/mail.readwrite” }, null, this.clientIdB, this.redirectUriB, new PlatformParameters(PromptBehavior.Auto, this.windowHandleB)).Result; // Use the ‘Microsoft.Office365.OutlookServices-V2.0’ Nuget package from now on. this.client = new […]

在Office365上使用默认SMTP凭据的例外 – 客户端未经过身份validation,无法在MAIL FROM期间发送匿名邮件

我正在使用NLog将日志作为带有自定义邮件目标的电子邮件发送。 我从我的office365帐户发送设置为我的web.config(我的主项目)中的默认设置,如下所示: 我用我的日志目标(在我的NLog实现包中)覆盖Write方法,如下所示: protected override void Write(LogEventInfo logEvent) { try { using (var mail = new MailMessage()) { this.SetupMailMessage(mail, logEvent, this.Layout.Render(logEvent)); using (SmtpClient smtpClient = new SmtpClient()) { smtpClient.UseDefaultCredentials = true; smtpClient.Send(mail); } } } catch (Exception exception) { throw new NLogRuntimeException(“An error occurred when sending a log mail message.”, exception); } } 当系统尝试从此帐户发送邮件时,将引发以下System.Net.Mail.SmtpException : […]

ADAL – AcquireTokenSilentAsync失败(Azure Active Directory身份validation库)

我编写了一个新的应用程序来通过其余的API访问办公室数据,因此我想使用新的身份validation模型(V2.0端点) v2.0 endpoit有什么不同 我可以通过电话获得令牌 private static string[] scopes = { “https://outlook.office.com/mail.read”, “https://outlook.office.com/calendars.read” }; public async Task SignIn() { … SNIP Uri authUri = await authContext.GetAuthorizationRequestUrlAsync(scopes, null, clientId, redirectUri, new UserIdentifier(“contoso@foo”, UserIdentifierType.RequiredDisplayableId), null); return Redirect(authUri.ToString()); } authContext.AcquireTokenByAuthorizationCodeAsync(authCode, redirectUri, credential, scopes) 问题是第二次调用 public async Task SignIn() { … SNIP var authResult = authContext.AcquireTokenSilentAsync(scopes, clientId, new UserIdentifier(“contoso@foo.ch”, UserIdentifierType.RequiredDisplayableId)) […]

SharePoint Online身份validation失败

我有一个C#应用程序,它使用Web请求对SharePoint Online进行身份validation。 它适用于我,但其他人收到以下错误: S:Sender wst:FailedAuthentication Authentication Failure 0x80048821 0x80041034 The specified member name is either invalid or empty. 这个错误是什么意思? 我很确定他们输入了正确的用户名和密码。 是否有一个SharePoint Online错误代码列表,我可以找到哪些地方可以帮助我识别问题? 这是我的C#代码: var request = (HttpWebRequest)WebRequest.Create(@”https://login.microsoftonline.com/extSTS.srf”); request.AllowAutoRedirect = false; request.ContentType = @”application/json; odata=verbose”; request.CookieContainer = this.CookieContainer; request.Method = @”POST”; request.UserAgent = @”Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)”; string soapRequest = Strings.SharePointOnlineAuthenticationRequest […]

是否可以使用c#中的Exchange Web服务分配角色?

是否可以使用c#中的Exchange Web服务分配角色? 像您一样以编程方式自动添加角色ApplicationImpersonation并将角色分配给Office 365 Exchange中的用户?

如何使用一个驱动器业务API从本机应用程序的azure活动目录中获取客户机密码?

我正在开发一个outlook插件。我想在其中使用一个驱动器API。我很容易得到客户端ID和客户端秘密使用API​​的一个驱动器个人帐户。但是,当我在azure活动目录中注册我的应用程序的一个驱动器业务API ,它只为我创建了一个客户端ID,但没有创建任何客户端密码。我在注册时选择了本机应用程序,因为我的应用程序是本机应用程序。我无法在没有客户端密钥的情况下对用户进行身份validation。请让我知道,如何让客户保密?提前感谢。

无法以静默方式获取令牌。 调用方法AcquireToken

我试图从outlooo 365 API获取一些日历项目 我从样本中得到的代码是这样的: public async Task Index() { // fetch from stuff user claims var signInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value; var userObjectId = ClaimsPrincipal.Current.FindFirst(SettingsHelper.ClaimTypeObjectIdentifier).Value; // discover contact endpoint var clientCredential = new ClientCredential(SettingsHelper.ClientId, SettingsHelper.ClientSecret); var userIdentifier = new UserIdentifier(userObjectId, UserIdentifierType.UniqueId); // create auth context AuthenticationContext authContext = new AuthenticationContext(SettingsHelper.AzureADAuthority, new EFADALTokenCache(signInUserId)); // create O365 discovery client […]

使用来自EWS或REST API的office365 JS API访问CustomProperties

我有一个Office 365邮件应用程序,它在保存项目之前将值存储在自定义属性中。 保存项目时,我想使用服务器端应用程序访问此属性。 阅读自定义属性文档告诉我,我无法使用任何其他服务(如EWS)访问使用JS API创建的自定义属性,因为这些不是MAPI属性。 有没有解决方法? 是否可以使用REST API访问这些?

通过Windows窗体应用程序在线交换电子邮件(Office 365)

我试图通过Windows窗体应用程序从我的O365邮箱中读取电子邮件。 我希望我的应用程序使用我的用户名和密码从O365邮箱中读取电子邮件。 是否可以在Azure上注册应用程序的情况下访问O365 api? (仅使用用户凭据) 我在msdn上访问了这篇文章, https: //msdn.microsoft.com/en-us/library/office/dn567668( v = exchg.150)。我在这行中有一个问题: result = context.AcquireToken(resourceId, ClientID, _returnUri); // parameters are no longer valid in this method