我有一个用Ionic Framework3编写的本机客户端应用程序。我有一个用ASP.NET Core1.1编写的Web API。我想使用Azure Active Directory来管理对Web API的访问。
这在AAD中被配置为Web App/API。我有一个应用程序ID和一个由AAD给出的对象ID。此外,我将主页URL和应用程序ID URI设置为与Web API的根(https://crm.mycompany.com
)匹配。
我的Ionic客户端应用程序通过以下方式成功验证了AAD:
authenticate(userID, authCompletedCallback) : any {
let parent = this;
//this.context = new AuthenticationContext(this.config.authority);
let context = this.msAdal.createAuthenticationContext("https://login.microsoftonline.com/myTenantId");
console.log(context);
context.acquireTokenAsync(parent.config.resourceUri, parent.config.clientId, parent.config.redirectUri, userID, "")
.then(authCompletedCallback)
.catch((e: any) => console.log('Authentication failed', e));
}
登录过程在应用程序中进行得很好,回调会收到一个令牌,我可以使用jwt.io将其有效负载转换为大致如下:
{
"aud": "https://crm.mycompany.com/",
"iss": "https://sts.windows.net/someID/",
"iat": 1506539211,
"nbf": 1506539211,
"exp": 1506543111,
"acr": "1",
"aio": "someOtherID",
"amr": [
"pwd"
],
"appid": "appID",
"appidacr": "0",
"e_exp": 262800,
"family_name": "Walter",
"given_name": "Philip",
"ipaddr": "someAddress",
"name": "Philip Walter",
"oid": "someOtherID",
"onprem_sid": "someOtherID",
"puid": "stuff",
"scp": "user_impersonation",
"sub": "e_X7WlAoVS2vzXm1pr3kcDOrET7czcC0f8-YRU_2DJ8",
"tenant_region_scope": "NA",
"tid": "ourTenantID",
"unique_name": "pwalter@advtis.com",
"upn": "pwalter@advtis.com",
"uti": "RLvLlibQHESwmujVBBdlAA",
"ver": "1.0"
}
let headers = new Headers();
headers.append('Authorization', 'Bearer ' + this.authToken.accessToken);
let options = new RequestOptions({ headers : headers });
this.data.http.get(url, options).map(res => res.json()).subscribe((data) => {
console.log(data);
});
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = Configuration["Authentication: AzureAd:AADInstance"] + Configuration["Authentication: AzureAd:TenantId"],
Audience = Configuration["Authentication: AzureAd:Audience"]
});
您的受众为什么说“AUD”:“https://graph.windows.net”
?
应该说“AUD”:“https://yourwebapi.azurewebsites.net”
或类似的内容。
上面包含的令牌只适用于Graph API,任何其他Azure AD受保护的资源都会拒绝它,包括您的Web API,因为它希望受众与自己匹配。
parent.config.resourceURI
可能是您从以下位置获取所需访问群体的来源:
context.acquireTokenAsync(
parent.config.resourceUri,
...
“aud”
(受众)声明标识JWT要针对的收件人。每个要处理JWT的主体都必须用受众声明中的值来标识自己。如果处理索赔的主体在该索赔存在时没有用“AUD”索赔中的值标识自己,则JWT必须被拒绝。在一般情况下,“AUD”值是一个区分大小写的字符串数组,每个字符串都包含一个StringOrURI值。在JWT有一个受众的特殊情况下,“AUD”值可能是包含StringOrURI值的单个区分大小写的字符串。对受众价值观的解释通常是特定于应用的。本声明的使用是可选的。
有时叫做资源,有时叫做观众,有时叫做AUD...就是它是什么:)
我使用docusign身份验证流作为 登录时 让url=”https://account-d.docusign.com/oauth/auth?response_type=token 窗打开(url,“U self”);成功验证后,返回/token\u type/state中的access\u token/expires\u。 请指导如何refresh_token?refresh_token如何获得
我们有一个简单的应用程序,只有两个消费者和5个endpoint。对于一个endpoint,我需要某种身份验证方式。我喜欢这样做的条纹方式,但我不知道我如何可以在spring Boot中构建这个。 “对API的身份验证是通过HTTP基本身份验证执行的。请提供API密钥作为基本身份验证用户名值。不需要提供密码。”
我试图弄清楚我应该如何坚持身份验证。 假设用户使用电子邮件和密码成功进行身份验证。然后服务器生成并返回两个令牌: accesstoken(jwt过期15分钟)将存储在浏览器存储中 refreshtoken(jwt过期7天)作为安全cookie 当将访问令牌存储在本地存储(或会话存储)中时,React 应用程序将简单地检查它是否存在于存储中并继续渲染私有路由。因此,这意味着如果用户有一个无效/被盗的
问题内容: 我正在尝试使用从Android的AccountManager接收的令牌而不是使用用户名和密码来实现IMAP gmail客户端。 Google为该IMAP示例提供了oauth2 http://code.google.com/p/google-mail- oauth2-tools/source/browse/#svn%2Ftrunk%2Fjava%2Fcom%2Fgoogle%2Fgoog