繁体   English   中英

IdentityServer3 Microsoft Graph范围和流程

[英]IdentityServer3 Microsoft Graph scopes and flow

我的解决方案一直在通过IdentityServer3对Azure AD进行良好的身份验证。 现在,我们正在尝试集成一些Microsoft Graph功能。 可悲的是,它失败了。

通过一个示例项目( https://graph.microsoft.io/en-us/docs/get-started/aspnetmvc )运行,该文档详细介绍了在Microsoft App Registration Portal( https:/)上新应用程序的注册。 /apps.dev.microsoft.com ),并明确告知应用程序允许隐式流。

确保选中“ 允许隐式流”复选框,然后输入http:// localhost:55065 /作为重定向URI。 允许隐式流选项启用OpenID Connect混合流。 在身份验证期间,这使应用程序可以接收应用程序用来获取访问令牌的登录信息(id_token)和工件(在这种情况下为授权码)。

当然,我们已经在Azure的生产门户上注册了进行身份验证的应用程序,并且从IdentityServer3中的客户端将流设置为Flow = Flows.Implicit ,这似乎表明我们现在仅允许隐式流,但期望隐式流。

当我添加其他范围时offline_access User.Read Mail.Send我不再能够成功进行身份验证,相反,我收到一条错误消息,指出Invalid Scope

我担心的是,“ Microsoft应用程序注册门户”与现实生活完全不同,未正确设置某些内容。 生产Azure应用注册上没有特定的“允许隐式流程”设置,因此它真的接受Implicit Flow吗?

是否有人能将这两个系统集成在一起并从使用IdentityServer3针对Azure AD的单个身份验证中获得Microsoft Graph的完全利用所期望的结果?

要在Azure AD注册门户中启用隐式授予流,需要在应用清单中添加"oauth2AllowImplicitFlow":true 本文档的“为单页应用程序启用OAuth 2.0隐式授予”部分详细说明了如何执行此操作的分步说明:

https://docs.microsoft.com/zh-cn/azure/active-directory/active-directory-integrating-applications

另外,隐式授予流不会提供刷新令牌, offline_access范围专门要求刷新令牌。 我建议删除该范围。

这是一个很好的文档,可以进一步阅读有关AAD隐式授予的详细信息:

https://docs.microsoft.com/zh-cn/azure/active-directory/active-directory-dev-understanding-oauth2-implicit-grant

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM