Mar*_*ana 3 asp.net openid active-directory azure azure-active-directory
让我们看看你的专家是否知道这里发生了什么.
我们在Azure网站上运行了一个Web应用程序.此WebApp使用OWIN + OpenID Connect根据Azure Active Directory租户对用户进行身份验证.该应用程序还使用Azure AD Graph API来收集目录的某些数据.
我们的代码基于GitHub中提供的这个示例项目:https://github.com/AzureADSamples/WebApp-GraphAPI-DotNet
WebApp几个小时前就完美运行了(对AD进行身份验证并从目录中获取数据),但最奇怪的事情发生在我们身上.今天我们发现我们仍然可以对AD进行身份验证,但Graph API几乎是随机抛出错误.
当我尝试以同步方式通过ObjectId获取特定用户时,我们将错误追溯到特定请求:
Claim claimObject = ClaimsPrincipal.Current.FindFirst(Helper.Constants.ADTenant.ObjectIdClaimType);
string userObjectID = claimObject == null ? string.Empty : claimObject.Value;
ActiveDirectoryClient client = AuthenticationHelper.GetActiveDirectoryClient();
List<IUser> users = client.Users.Where(u => u.ObjectId == userObjectID).ExecuteAsync()
.Result.CurrentPage.ToList();
Run Code Online (Sandbox Code Playgroud)
事情是最后一行抛出关于OData模型的异常:
"A value without a type name was found and no expected type is available. When the model is specified, each value in the payload must have a type which can be either specified in the payload, explicitly by the caller or implicitly inferred from the parent value."
Run Code Online (Sandbox Code Playgroud)
我们开始将最后一行代码切成片段,如下所示:
IReadOnlyQueryableSet<IUser> queryUsers = client.Users.Where(u => u.ObjectId == userObjectID);
IPagedCollection<IUser> pagedUserCollection = queryUsers.ExecuteAsync().Result;
List<IUser> users = pagedUserCollection.CurrentPage.ToList();
Run Code Online (Sandbox Code Playgroud)
并发现异常是投入这一行:
IPagedCollection<IUser> pagedUserCollection = queryUsers.ExecuteAsync().Result;
Run Code Online (Sandbox Code Playgroud)
最奇怪的是昨天这条线路正常运行,今天开始失败而没有解释.
有谁知道我们做错了什么?为什么今天开始失败?
我们正在使用api-version = 2013-11-8.我们将Azure AD Graph API客户端库保留在版本1.0上,如GitHub上的示例所示.
伙计们,
首先 - 许多道歉引入了这个问题.根本问题是实体(在这种情况下是用户实体)在服务端更新了新集合(AlternativeSignInNamesInfo).通常,添加新实体,属性,集合和复杂类型不应导致客户端库发生重大更改.但是由于ODatalib中的问题,未知的集合不会被简单地忽略.
我完全同意对此的看法,我们绝对不希望让依赖于Graph Client Library的应用程序受到任何中断.我们正在与ODatalib团队合作以解决此问题,因此我们的Graph客户端库不再是一个问题.
与此同时,我们正在回滚我们的Graph服务,因此2.0.5应该再次开始工作.版本2.0.6也应该有效 - 只要您不尝试在User对象(AlternativeSignInNamesInfo)上发布到新集合.
更新:Graph服务已回滚.我还验证了通过Graph Client Library 2.0.5和2.0.6获得用户的效果.
希望这有帮助,并再次抱歉这里引起的任何问题.
| 归档时间: |
|
| 查看次数: |
2488 次 |
| 最近记录: |