Okta GroupUsersClient类不能正确添加用户且没有错误消息

时间:2016-01-28 20:11:20

标签: .net sdk okta

我们开发了一个.NET控制台应用程序来添加应用程序,组和用户。在同一个应用程序中,我们有添加组的方法 - >应用和用户 - >组。我们发现用户并不总是按预期添加到指定的组。如果发生这种情况,我们不会收到错误消息。

我们使用的是Okta .NET SDK v4.0.30319。下面是我们执行以将用户添加到组的方法。有没有人遇到过这个问题,如果有的话,你是怎么解决的?

static List<string> OktaAddGroupUser(string sGroupName, string sLogin, Okta.Core.Clients.GroupsClient groupsClient, Okta.Core.Clients.UsersClient usersClient, string strOktaToken, string strOktaSubdomain)
    {
        List<string> arrayReturn = new List<string>();
        Okta.Core.PagedResults<Group> oktaGroups;
        Okta.Core.Clients.GroupUsersClient oktaGroupUsersClient;

        try
        {
            var oktaUser = usersClient.Get(sLogin);
            oktaGroups = groupsClient.GetList();

            foreach (var oktaGroup in oktaGroups.Results) 
            {
                if (oktaGroup.Profile.Name.ToString() == sGroupName)
                {
                    oktaGroupUsersClient = new Okta.Core.Clients.GroupUsersClient(oktaGroup, strOktaToken, "ogletree");
                    oktaGroupUsersClient.Add(oktaUser);
                }
            }

            arrayReturn.Add("0");
            arrayReturn.Add("OktaAddUserGroup: User successfully added to group");
        }
        catch (Okta.Core.OktaException e)
        {
            arrayReturn.Add(e.ErrorCode.ToString());
            arrayReturn.Add("OktaAddUserGroup: " + e.Message.ToString());
        }

        return arrayReturn;
    }

1 个答案:

答案 0 :(得分:0)

如果您有超过200个群组(并且一般而言,您的Okta租户中有超过200个Okta项目),则会出现此问题。

实际上,当您调用GetList()方法时,将应用默认页面大小200(如果您不覆盖pageSize参数),以便GetList()调用仅返回它找到的前200个项目

GetList()方法支持可选参数,例如&#34; query&#34;和&#34;过滤&#34;可用于执行更优化查询并避免不必要的循环的参数。

在您的特定情况下,因为您只对检索具有特定名称的特定组感兴趣,所以应使用GetList(query:sGroupName)调用。这应该返回一个PageResults对象,在其Results属性中只有一个对象(最多!该组也可能不存在)。

执行GetList(查询:&#34; somevalue&#34;)将转换为&#34;?q = somevalue&#34;参数添加到REST查询中。在调用Groups API时,查询将类似于{{url}} / api / v1 / groups?limit = 200&amp; q = somevalue,您可以在Postman中轻松测试(参见http://developer.okta.com/docs/api/getting_started/api_test_client.html

我希望这有帮助!