我希望允许我的用户使用他们的Office 365帐户访问我的WebApp,方式与我在Twitter,Facebook和Google上的方式相同。 我已经在Azure AD中创建了一个WebApp。
我正在使用nodejs,passportjs和passport-azure-oauth2策略。
在Azure AD中,Web应用程序是多租户,而SIGN-ON URL是“https://nudniq.com”
APP ID URI:“https:\ nudniq.com” 回复网址:“https:\ nudniq.comauth \ microsoft \ callback” 访问应用程序所需的用户分配:否
注意:我在此处发布的URL中使用了反斜杠而不是斜杠,因为stackoverflow只允许我写两个以上的链接。
我唯一要求的是:
Read all users' basic profiles
我正在用这个值创建我的策略:
clientID: '<client_id>',
clientSecret: '<client_secret_key>',
callbackURL: 'https://nudniq.com/auth/microsoft/callback'
但是我收到以下错误:
TokenError: AADSTS50001: Resource identifier is not provided.
Trace ID: 95f88f5a-95b9-4d3a-86fe-19ae0bbfcc76
Correlation ID: b056150c-debd-469d-963b-ea362ca93884
Timestamp: 2016-06-29 01:38:39Z
at AzureOAuth2.OAuth2Strategy.parseErrorResponse (/home/ec2-user/test2/fastpass/node_modules/passport-oauth2/lib/strategy.js:298:12)
at AzureOAuth2.OAuth2Strategy._createOAuthError (/home/ec2-user/test2/fastpass/node_modules/passport-oauth2/lib/strategy.js:345:16)
at /home/ec2-user/test2/fastpass/node_modules/passport-oauth2/lib/strategy.js:171:43
at /home/ec2-user/test2/fastpass/node_modules/oauth/lib/oauth2.js:177:18
at passBackControl (/home/ec2-user/test2/fastpass/node_modules/oauth/lib/oauth2.js:123:9)
at IncomingMessage.<anonymous> (/home/ec2-user/test2/fastpass/node_modules/oauth/lib/oauth2.js:143:7)
at IncomingMessage.emit (events.js:129:20)
at _stream_readable.js:908:16
at process._tickDomainCallback (node.js:381:11)
请帮助我,我不知道我做错了什么。
答案 0 :(得分:1)
如果您使用AzureOAuthStrategy策略,则当您遇到此问题时,就意味着您错过了resource
参数的配置。
根据GitHub存储库中的代码示例:
this.passport.use("provider", new AzureOAuth2Strategy({
clientID: config.clientID,
clientSecret: config.clientSecret,
callbackURL: config.callbackUri,
resource: config.resource,
tenant: config.tenant,
prompt: 'login',
state: false
}
我们需要配置此resource
参数
由于您是Office 365以对用户进行身份验证,因此请尝试将resource
设置为https://graph.microsoft.com
。
此外,请重新生成您的AAD应用程序的密钥,并将其保存在您的应用程序中,不要将其暴露给公众。
任何更新,请随时告诉我。