标签: adal

JWT中exp(到期时间)声明的格式是什么

我正在使用ADAL库来获取资源的访问令牌.有谁知道到期时间是什么格式?更具体地说 "exp" (Expiration time) claim.

JwtSecurityTokenclass在解析后只返回int32.所以,这不是一个好的指标.

尝试解析它TimeSpan,DateTime但值不是相隔90分钟.它几乎是一样的.

这是我从小提琴手那里得到的iatexp声称(使用https://jwt.io/来解析令牌)

iat:1475874457

exp"1475878357

这些价值差不多.

jwt azure-active-directory adal

38
推荐指数
2
解决办法
3万
查看次数

ADAL JS - 不支持response_type ="token"

我正在使用adal js与Azure AD进行身份验证.我有webApp和webApi.几乎我的应用程序都遵循此示例https://github.com/AzureADSamples/SinglePageApp-WebAPI-AngularJS-DotNet.

我能够登录到我的webApp,adal.js成功获取了webApi的令牌并将其注入请求中.一切都在工作到最近.然后webApi的令牌获取停止了错误:

"应用程序不支持"response_type'token'"

renewToken失败:AADSTS70005:应用程序不支持response_type'token'跟踪ID:104c18e3-eb6e-42a4-a292-c6f170f27f65相关ID:c2e65622-0c58-473a-8184-b3056fb1af58时间戳:2015-03-27 22:53 :12Z

我可以清楚地看到adal.js正在构建请求并将"response_type = token"放入查询字符串中.所以,我的假设是在Azure AD方面发生了一些变化.

我发现一篇文章将response_type = token与隐式授权流程相关联.我确认我的webApp已启用"oauth2AllowImplicitFlow".我已联系MS支持并等待解决.与此同时,我想与社区分享这一点,看看是否有人有关于这个问题的任何信息.

谢谢

azure adal

21
推荐指数
2
解决办法
1万
查看次数

Azure:无法使用RefreshToken获取新的AccessToken

我正在构建一个需要访问客户的Office 365管理活动的应用程序.我已按照此Azure Active Directory概述中概述的步骤操作,并且能够使用OAuth代码获取初始访问令牌,以及使用此令牌设置O365订阅.

但是,当我使用refresh_token提供的初始令牌获取新的访问令牌时,我收到以下错误:

{"error_description":"AADSTS65001:用户或管理员未同意使用ID为'8f72f805-dfd2-428d-8b0e-771a98d26c16'的应用程序..发送此用户和资源的交互式授权请求.\ r \nTrace ID: df229c3f-8f28-420b-9ac3-321ab1b2ad09\r \n相关ID:0e0f2bcb-4b19-458a-8556-2a6d4e51379f\r \n时间戳:2016-10-03 17:33:20Z","错误":"invalid_grant"}

由于我能够获取并使用初始访问令牌,因此我非常确定用户正在授予我的应用程序一些权限.为了使用刷新令牌获取新的访问令牌,是否需要特定权限?

编辑: 具体来说,我正在使用com.microsoft.azure::adal4j java包,AuthenticationContext类,acquireTokenByAuthorizationCodeacquireTokenByRefreshToken方法:

public class AzureProvisioner {
    private final AuthenticationContext authService = new AuthenticationContext(
            "https://login.windows.net/common/oauth2/token", true, Executors.newSingleThreadExecutor());
    private final ClientCredential clientCredential = new ClientCredential("azureAppId", "azureAppSecret");
    public static final String resource = "https://manage.office.com";
    // Internal implementation of REST interface; Microsoft didn't provide a Java Library
    final Office365ManagementApi managementApi;

    public void acquireToken(final String authCode, …
Run Code Online (Sandbox Code Playgroud)

java azure azure-active-directory adal

17
推荐指数
1
解决办法
1172
查看次数

无法获取客户端凭据访问令牌以授权Power BI

我正在尝试使用Power BI REST API,使用通过"客户端凭据"方法获取的访问令牌,但我一直403 Forbidden在接受我的请求.

我的代码遵循此AzureAD示例中演示的模式.事实上,为了隔离这个问题,我正在运行该示例代码(当然,我自己的值parameters.json):

{ 
  expiresIn: 3599,
  tokenType: 'Bearer',
  expiresOn: Tue Sep 01 2015 16:56:07 GMT-0500 (CDT),
  resource: '00000002-0000-0000-c000-000000000000',
  accessToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiIwMDAwMDAwMi0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8xM2QxNzIwNC0wZGU2LTQ1NzQtOTgzYS05NjFhYjk0M2M3Y2UvIiwiaWF0IjoxNDQxMTQwNjcwLCJuYmYiOjE0NDExNDA2NzAsImV4cCI6MTQ0MTE0NDU3MCwidmVyIjoiMS4wIiwidGlkIjoiMTNkMTcyMDQtMGRlNi00NTc0LTk4M2EtOTYxYWI5NDNjN2NlIiwib2lkIjoiYzM1ZWQyYTktYTYzZS00YzAwLThmYmYtY2FlYjlmZjYwMjYwIiwic3ViIjoiYzM1ZWQyYTktYTYzZS00YzAwLThmYmYtY2FlYjlmZjYwMjYwIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvMTNkMTcyMDQtMGRlNi00NTc0LTk4M2EtOTYxYWI5NDNjN2NlLyIsImFwcGlkIjoiNDQ2Y2Y5OTItMDQzYS00YjgxLWJhYzQtY2RlZWYyNGFhNzFjIiwiYXBwaWRhY3IiOiIxIn0.YTGJfdW1wP09bDHwwsv3FPAmEpmQdc_kifvgY-1KjhkZWANfYtd050wfeZdNgMUeSPZyFdWnoBjnJ4xrlDtnsADwV1Grr6TXYcymPLofbY-xy0cjyvzxTmM11DJ9XN8A4tkgvK0jtR-YyIjPw5EKJSKyeEbD9U3mWsE_gu7IzKzXl8e-dfVAqRYS6WHZy6_0FaNmppPDls5s_QIPOHofFSiWVISw41Mz0fQnP2QEGyceOCvKYJtrUOCDwfVuwFS-gSLmYvEGOJfmIjftP3srda0JPirVzBeU0IFJJ1KW81kE5cfKw1KkBB04VVetRUs_7HqloYaKKiTybauhXAodRQ',
  isMRRT: true,
  _clientId: '[snip]',
  _authority: 'https://login.windows.net/[snip]' 
}
Run Code Online (Sandbox Code Playgroud)

当我在curl请求中使用该访问令牌时,如下所示,我得到一个403:

curl -vv -X GET https://api.powerbi.com/v1.0/myorg/datasets -H"Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSJ9.eyJhdWQiOiIwMDAwMDAwMi0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC8xM2QxNzIwNC0wZGU2LTQ1NzQtOTgzYS05NjFhYjk0M2M3Y2UvIiwiaWF0IjoxNDQxMTQwNjcwLCJuYmYiOjE0NDExNDA2NzAsImV4cCI6MTQ0MTE0NDU3MCwidmVyIjoiMS4wIiwidGlkIjoiMTNkMTcyMDQtMGRlNi00NTc0LTk4M2EtOTYxYWI5NDNjN2NlIiwib2lkIjoiYzM1ZWQyYTktYTYzZS00YzAwLThmYmYtY2FlYjlmZjYwMjYwIiwic3ViIjoiYzM1ZWQyYTktYTYzZS00YzAwLThmYmYtY2FlYjlmZjYwMjYwIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvMTNkMTcyMDQtMGRlNi00NTc0LTk4M2EtOTYxYWI5NDNjN2NlLyIsImFwcGlkIjoiNDQ2Y2Y5OTItMDQzYS00YjgxLWJhYzQtY2RlZWYyNGFhNzFjIiwiYXBwaWRhY3IiOiIxIn0.YTGJfdW1wP09bDHwwsv3FPAmEpmQdc_kifvgY-1KjhkZWANfYtd050wfeZdNgMUeSPZyFdWnoBjnJ4xrlDtnsADwV1Grr6TXYcymPLofbY-xy0cjyvzxTmM11DJ9XN8A4tkgvK0jtR-YyIjPw5EKJSKyeEbD9U3mWsE_gu7IzKzXl8e-dfVAqRYS6WHZy6_0FaNmppPDls5s_QIPOHofFSiWVISw41Mz0fQnP2QEGyceOCvKYJtrUOCDwfVuwFS-gSLmYvEGOJfmIjftP3srda0JPirVzBeU0IFJJ1KW81kE5cfKw1KkBB04VVetRUs_7HqloYaKKiTybauhXAodRQ"
Run Code Online (Sandbox Code Playgroud)

想知道这个curl请求是否存在缺陷,我通过浏览器webtools "错误地"访问了一个访问令牌,上面的工作正常,返回200一个JSON响应列出我的数据集.

我也注意到返回代码是403(禁止),而不是401(未授权),所以我想知道授权是否正常但是Power BI端的权限是错误的.但是403当我使用任何垃圾文本作为访问令牌时,我也会得到(例如Authorization: Bearer foo),所以我放弃了这个理论.

所以.我想我有一个有效的测试,我得到了我认为是有效的访问令牌(来自该client-credentials-sample.js代码),但它仍然无法正常工作.我错过了什么?

azure adal powerbi

15
推荐指数
1
解决办法
7882
查看次数

用于Azure AD B2C和Xamarin的MSAL或ADAL库

截至2016年10月,仍然是Microsoft身份验证库(MSAL - NuGet包:Microsoft.Identity.Client)是与Xamarin(iOS/Android)和Azure AD B2C服务一起使用的正确/唯一库吗?此库(MSAL)仅作为alpha提供,并且似乎不处于主动维护或开发状态(自4月以来).

有迹象表明,Active Directory身份验证库(ADAL - NuGet包:Microsoft.IdentityModel.Clients.ActiveDirectory)旨在作为Microsoft的"一个Azure身份验证库 - 规则 - 所有人",它支持Xamarin; 它也在积极维护,并且不处于"alpha"或"beta"状态.

了解Microsoft过去曾指出Azure AD B2C开发人员使用MSAL库,是否可以使用ADAL库在Xamarin应用程序中验证Azure AD B2C用户?是否有人可以指向我的博客或示例代码,这将演示如何执行此操作?

authentication azure xamarin adal azure-ad-msal

15
推荐指数
1
解决办法
9295
查看次数

找不到方法:AcquireToken(System.String,Microsoft.IdentityModel.Clients.ActiveDirectory.ClientAssertionCertificate)

我按照以下文档使用Azure AD App Registration创建了x509证书.

https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azuread

我生成了.pfx文件,设置了密码,我还在我的租户Azure AD中注册了该应用程序,然后使用keycredentials部分更新了清单.

然后,我正在创建一个接收一些参数的WEB API,包括.pfx文件.

 [HttpPut]
        public async Task<IHttpActionResult> PutTenant([ModelBinder(typeof(TenantModelBinder))] Tenant tenant)
        {
            try
            {               
                var cert = new X509Certificate2(tenant.CertificateFile, tenant.CertificatePassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable);

                using (var cc = new OfficeDevPnP.Core.AuthenticationManager().GetAzureADAppOnlyAuthenticatedContext(tenant.SiteCollectionTestUrl, tenant.ApplicationId, tenant.TenantDomainUrl, cert))
                {
                    cc.Load(cc.Web, p => p.Title);
                    cc.ExecuteQuery();
                };
            }
            catch (System.Exception)
            {
                return BadRequest("Configuration Invalid");
            }
Run Code Online (Sandbox Code Playgroud)

我正在使用来自HttpRequest的bytearray来创建x509对象.

但是我收到此错误:

Message "Method not found: 'Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationResult Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.AcquireToken(System.String, Microsoft.IdentityModel.Clients.ActiveDirectory.ClientAssertionCertificate)'."   string
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

at OfficeDevPnP.Core.AuthenticationManager.<>c__DisplayClass36_0.<GetAzureADAppOnlyAuthenticatedContext>b__0(Object sender, WebRequestEventArgs args)\r\n   at Microsoft.SharePoint.Client.ClientRuntimeContext.OnExecutingWebRequest(WebRequestEventArgs args)\r\n   at Microsoft.SharePoint.Client.ClientContext.GetWebRequestExecutor()\r\n   at Microsoft.SharePoint.Client.ClientContext.GetFormDigestInfoPrivate()\r\n   at …
Run Code Online (Sandbox Code Playgroud)

.net c# azure azure-active-directory adal

15
推荐指数
1
解决办法
1807
查看次数

Azure Active Directory Safari重定向问题

使用最新版本的Safari(12)登录使用Mac OS和iOS设备的Microsoft Online似乎存在当前问题.

Safari 12上的更新如下所示:https://developer.apple.com/safari/whats-new/

由于一些新的安全和隐私更新,似乎有一个cookie问题导致登录到端点时无限重定向:http://login.microsoftonline.com

此新更新导致Apple设备用户上的Safari在登录时进入重定向无限循环.

这很可能是由于Safari不允许Microsoft cookie通过,这导致Microsoft的服务器重定向回登录页面以获取所需的cookie.但是,浏览器仍然有一些身份信息,导致用户再次自动登录,重定向到服务器.cookie仍然不随请求一起发送,导致服务器将用户发送回登录页面.从服务器和浏览器的这种重定向似乎是无限重定向背后的主要原因.

是否有任何更新,推理或解决方案来解决/解决Safari和Microsoft登录重定向问题背后的问题?

safari macos ios azure-active-directory adal

15
推荐指数
2
解决办法
2802
查看次数

AcquireTokenSilent始终无法以静默方式获取令牌

使用ADAL我有两个AuthenticationContext使用SQL中持久化的令牌缓存.

使用AcquireTokenByAuthorizationCode它在数据库中写入令牌,但在使用时AcquireTokenSilent我总是得到

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

以下是复制问题的详细信息:

我创建了一个Context

AuthenticationContext authContext = new AuthenticationContext(_authority, new AzureAdalCache(companyId, _entries, _unitOfWork));
Run Code Online (Sandbox Code Playgroud)

然后我通过授权获取授权

authContext.AcquireTokenByAuthorizationCode(authorizationCode, new Uri(redirectUri), _clientCredential);
Run Code Online (Sandbox Code Playgroud)

此时,它会在数据库中保存一个条目

然后,如果我打电话给我,我得到一个例外.

authContext.AcquireTokenSilent(_authority, _clientCredential, new UserIdentifier(companyId.ToString(), UserIdentifierType.UniqueId)).AccessToken;
Run Code Online (Sandbox Code Playgroud)

我也尝试过相同的结果:

authContext.AcquireTokenSilent(_authority, _clientId).AccessToken;
authContext.AcquireTokenSilent(_authority, _clientCredential, UserIdentifier.AnyUser).AccessToken;
Run Code Online (Sandbox Code Playgroud)

AzureAdalCache这个要点中发布我的实现.

Cache的每个条目都是这样的.

我错过了什么?

更新

根据@vibronet的评论回答,我有这个

AuthenticationContext authContext = new AuthenticationContext(_authority, new AzureAdalCache(companyId, _entries, _unitOfWork));
authContext.AcquireTokenByAuthorizationCode(authorizationCode, new Uri(redirectUri), _clientCredential, _eWSResource);
string result = authContext.AcquireTokenSilent(_eWSResource, _clientId, UserIdentifier.AnyUser).AccessToken;
Run Code Online (Sandbox Code Playgroud)

oauth azure azure-active-directory adal azure-webjobs

14
推荐指数
1
解决办法
2万
查看次数

ADAL.NET v3不支持使用UserCredential的AcquireToken?

在ADAL.NET 2.x中,我们使用以下代码从Azure AD中获取令牌UserCredential并且它完美地运行:

 var authContext = new AuthenticationContext(Authority);
 var userCredential = new UserCredential(username, password);
 var token = authContext.AcquireToken(ResourceUrl, ClientId, userCredential);
Run Code Online (Sandbox Code Playgroud)

当我今天升级ADAL.NET v3时,代码无法再编译,因为在新版本中,UserCredential没有使用用户名和密码重载构造函数.

我如何使用新版本的ADAL.NET v3解决这个问题?

c# azure azure-active-directory adal

14
推荐指数
1
解决办法
9649
查看次数

如何将azure广告整合到一个反应网络应用程序中,该应用程序也在使用天蓝色的REST API

我有一个Web应用程序是React,我已经为Web应用程序本身配置了Azure AD身份验证.它的100%客户端站点应用程序,没有服务器端组件.

我使用了这个组件:https: //github.com/salvoravida/react-adal

我的代码如下:adalconfig.js

import { AuthenticationContext, adalFetch, withAdalLogin } from 'react-adal';

export const adalConfig = {
  tenant: 'mytenantguid',
  clientId: 'myappguid',
  endpoints: {
    api: '14d71d65-f596-4eae-be30-27f079bf8d4b',
  },
  cacheLocation: 'localStorage',
};

export const authContext = new AuthenticationContext(adalConfig);

export const adalApiFetch = (fetch, url, options) =>
  adalFetch(authContext, adalConfig.endpoints.api, fetch, url, options);

export const withAdalLoginApi = withAdalLogin(authContext, adalConfig.endpoints.api);
Run Code Online (Sandbox Code Playgroud)

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import DashApp from './dashApp';
import registerServiceWorker from './registerServiceWorker';
import 'antd/dist/antd.css';

import { runWithAdal } …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs azure-active-directory adal adal.js

14
推荐指数
1
解决办法
1万
查看次数