• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# @ohos.enterprise.accountManager(账户管理)
2<!--Kit: MDM Kit-->
3<!--Subsystem: Customization-->
4<!--Owner: @huanleima-->
5<!--Designer: @liuzuming-->
6<!--Tester: @lpw_work-->
7<!--Adviser: @Brilliantry_Rui-->
8
9本模块提供设备账户管理能力,包括禁止创建本地用户等。
10
11> **说明:**
12>
13> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
14>
15> 本模块接口仅可在Stage模型下使用。
16>
17> 本模块接口仅对设备管理应用开放,且调用接口前需激活设备管理应用,具体请参考[MDM Kit开发指南](../../mdm/mdm-kit-guide.md)。
18
19## 导入模块
20
21```ts
22import { accountManager } from '@kit.MDMKit';
23```
24
25## accountManager.disallowOsAccountAddition
26
27disallowOsAccountAddition(admin: Want, disallow: boolean, accountId?: number): void
28
29禁止用户添加账号。
30
31**需要权限:** ohos.permission.ENTERPRISE_SET_ACCOUNT_POLICY
32
33**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
34
35**模型约束:** 此接口仅可在Stage模型下使用。
36
37
38**参数:**
39
40| 参数名    | 类型                                                    | 必填 | 说明                                                         |
41| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
42| admin     | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。                                       |
43| disallow  | boolean                                                 | 是   | 是否禁止创建本地用户,true表示禁止创建,false表示允许创建。  |
44| accountId | number                                                  | 否   | 用户ID,指定具体用户。当不传入此参数时,表示禁止所有用户添加账号;当传入此参数时,表示禁止指定用户添加账号。取值范围:大于等于0。<br/>accountId可以通过[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9)等接口来获取。 |
45
46**错误码**:
47
48以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
49
50| 错误码ID | 错误信息                                                     |
51| -------- | ------------------------------------------------------------ |
52| 9200001  | The application is not an administrator application of the device. |
53| 9200002  | The administrator application does not have permission to manage the device. |
54| 201      | Permission verification failed. The application does not have the permission required to call the API. |
55| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
56
57**示例:**
58
59```ts
60import { accountManager } from '@kit.MDMKit';
61import { Want } from '@kit.AbilityKit';
62
63let wantTemp: Want = {
64  // 需根据实际情况进行替换
65  bundleName: 'com.example.myapplication',
66  abilityName: 'EntryAbility'
67};
68
69try {
70  // 参数需根据实际情况进行替换
71  accountManager.disallowOsAccountAddition(wantTemp, true, 100);
72  console.info('Succeeded in disallowing os account addition.');
73} catch (err) {
74  console.error(`Failed to disallow os account addition. Code: ${err.code}, message: ${err.message}`);
75}
76```
77
78## accountManager.isOsAccountAdditionDisallowed
79
80isOsAccountAdditionDisallowed(admin: Want, accountId?: number): boolean
81
82查询是否禁止用户添加账号。
83
84**需要权限:** ohos.permission.ENTERPRISE_SET_ACCOUNT_POLICY
85
86**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
87
88**模型约束:** 此接口仅可在Stage模型下使用。
89
90
91**参数:**
92
93| 参数名    | 类型                                                    | 必填 | 说明                                                         |
94| --------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ |
95| admin     | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是   | 企业设备管理扩展组件。                                       |
96| accountId | number                                                  | 否   | 用户ID,指定具体用户。当不传入此参数时,表示查询所有用户是否禁止添加账号;当传入此参数时,表示查询指定用户是否禁止添加账号。取值范围:大于等于0。<br/>accountId可以通过[getOsAccountLocalId](../apis-basic-services-kit/js-apis-osAccount.md#getosaccountlocalid9)等接口来获取。 |
97
98**返回值:**
99
100| 类型    | 说明                                                       |
101| ------- | ---------------------------------------------------------- |
102| boolean | 返回true表示禁止添加账号。<br/>返回false表示允许添加账号。 |
103
104**错误码**:
105
106以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
107
108| 错误码ID | 错误信息                                                     |
109| -------- | ------------------------------------------------------------ |
110| 9200001  | The application is not an administrator application of the device. |
111| 9200002  | The administrator application does not have permission to manage the device. |
112| 201      | Permission verification failed. The application does not have the permission required to call the API. |
113| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
114
115**示例:**
116
117```ts
118import { accountManager } from '@kit.MDMKit';
119import { Want } from '@kit.AbilityKit';
120
121let wantTemp: Want = {
122  // 需根据实际情况进行替换
123  bundleName: 'com.example.myapplication',
124  abilityName: 'EntryAbility'
125};
126
127try {
128  // 参数需根据实际情况进行替换
129  let isDisallowed: boolean = accountManager.isOsAccountAdditionDisallowed(wantTemp, 100);
130  console.info(`Succeeded in querying the os account addition or not: ${isDisallowed}`);
131} catch (err) {
132  console.error(`Failed to query the os account addition or not. Code: ${err.code}, message: ${err.message}`);
133}
134```
135
136## accountManager.addOsAccountAsync
137
138addOsAccountAsync(admin: Want, name: string, type: osAccount.OsAccountType): Promise&lt;osAccount.OsAccountInfo&gt;
139
140后台添加账号。使用promise异步回调。
141
142**需要权限:** ohos.permission.ENTERPRISE_SET_ACCOUNT_POLICY
143
144**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
145
146**模型约束:** 此接口仅可在Stage模型下使用。
147
148
149**参数:**
150
151| 参数名 | 类型                                                         | 必填 | 说明                                                         |
152| ------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
153| admin  | [Want](../apis-ability-kit/js-apis-app-ability-want.md)      | 是   | 企业设备管理扩展组件。                                       |
154| name   | string                                                       | 是   | 账号名,指要添加的账号的名称。无法创建同名、名称为空的账号。 |
155| type   | [osAccount.OsAccountType](../apis-basic-services-kit/js-apis-osAccount.md#osaccounttype) | 是   | 要添加的账号的类型。<br/>取值范围:ADMIN、NORMAL、GUEST。<br/>· ADMIN:管理员账号。<br/>· NORMAL:普通账号。<br/>· GUEST:访客账号。 |
156
157**返回值:**
158
159| 类型                                                         | 说明                 |
160| ------------------------------------------------------------ | -------------------- |
161| Promise&lt;[osAccount.OsAccountInfo](../apis-basic-services-kit/js-apis-osAccount.md#osaccountinfo)&gt; | Promise对象,返回添加的账号信息。 |
162
163**错误码**:
164
165以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
166
167| 错误码ID | 错误信息                                                     |
168| -------- | ------------------------------------------------------------ |
169| 9200001  | The application is not an administrator application of the device. |
170| 9200002  | The administrator application does not have permission to manage the device. |
171| 9201003  | Failed to add an OS account.                                 |
172| 201      | Permission verification failed. The application does not have the permission required to call the API. |
173| 401      | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types; 3. Parameter verification failed. |
174
175**示例**:
176
177```ts
178import { accountManager } from '@kit.MDMKit';
179import { Want } from '@kit.AbilityKit';
180import { BusinessError, osAccount } from '@kit.BasicServicesKit';
181
182let wantTemp: Want = {
183  // 需根据实际情况进行替换
184  bundleName: 'com.example.myapplication',
185  abilityName: 'EntryAbility'
186};
187
188// 参数需根据实际情况进行替换
189accountManager.addOsAccountAsync(wantTemp, "TestAccountName", osAccount.OsAccountType.NORMAL).then((info) => {
190  console.info(`Succeeded in creating os account: ${JSON.stringify(info)}`);
191}).catch((err: BusinessError) => {
192  console.error(`Failed to creating os account. Code: ${err.code}, message: ${err.message}`);
193});
194```
195## accountManager.setDomainAccountPolicy<sup>19+</sup>
196
197setDomainAccountPolicy(admin: Want, domainAccountInfo: osAccount.DomainAccountInfo, policy: DomainAccountPolicy): void
198
199设置域账号策略。
200
201**需要权限:** ohos.permission.ENTERPRISE_SET_ACCOUNT_POLICY
202
203**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
204
205**设备行为差异:** 该接口在PC/2in1设备中可正常调用,在其他设备中返回801错误码。
206
207**模型约束:** 此接口仅可在Stage模型下使用。
208
209**参数:**
210
211| 参数名            | 类型                                                         | 必填 | 说明                                                         |
212| ----------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
213| admin             | [Want](../apis-ability-kit/js-apis-app-ability-want.md)      | 是   | 企业设备管理扩展组件。                                       |
214| domainAccountInfo | [osAccount.DomainAccountInfo](../apis-basic-services-kit/js-apis-osAccount.md#domainaccountinfo8) | 是   | 域账号信息。<br />若传入的domainAccountInfo内部属性均为空,则会设置为全局域账号策略。全局策略对所有的域账号生效。<br />若传入的domainAccountInfo内部属性不为空,则为指定域账号设置策略。<br />指定域账号策略的优先级高于全局策略,若指定域账号已有域账号策略,则全局策略对其不生效。<br />**说明**:若为指定域账号设置策略,DomainAccountInfo的serverConfigId字段必填。 |
215| policy            | [DomainAccountPolicy](#domainaccountpolicy19)                | 是   | 域账号策略。<br />**说明**:设置域账号策略后须在设备侧修改域账号密码,若未修改密码,则DomainAccountPolicy中的passwordValidityPeriod、passwordExpirationNotification配置不生效。 |
216
217**错误码**:
218
219以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
220
221| 错误码ID | 错误信息                                                     |
222| -------- | ------------------------------------------------------------ |
223| 9200001  | The application is not an administrator application of the device. |
224| 9200002  | The administrator application does not have permission to manage the device. |
225| 201      | Permission verification failed. The application does not have the permission required to call the API. |
226| 801      | Capability not supported. Failed to call the API due to limited device capabilities. |
227
228**示例:**
229
230```ts
231import { accountManager } from '@kit.MDMKit';
232import { Want } from '@kit.AbilityKit';
233import { BusinessError, osAccount } from '@kit.BasicServicesKit';
234
235async function setDomainAccountPolicy() {
236  let wantTemp: Want = {
237    // 需根据实际情况进行替换
238    bundleName: 'com.example.myapplication',
239    abilityName: 'EntryAbility'
240  };
241  let policy: accountManager.DomainAccountPolicy = {
242    // 需根据实际情况进行替换
243    authenticationValidityPeriod: 300,
244    passwordValidityPeriod: 420,
245    passwordExpirationNotification: 60
246  };
247  // 设置全局域账号策略
248  let accountInfo: osAccount.DomainAccountInfo = {
249    domain: '',
250    accountName: '',
251    serverConfigId: ''
252  };
253  try {
254    accountManager.setDomainAccountPolicy(wantTemp, accountInfo, policy);
255    console.info('Succeeded in setting global domainAccount policy.');
256  } catch (err) {
257    console.error(`Failed to set domainAccount policy. Code: ${err.code}, message: ${err.message}`);
258  }
259  // 设置指定域账号策略
260  let accountInfo2: osAccount.DomainAccountInfo = {
261    domain: '',
262    accountName: '',
263    serverConfigId: ''
264  };
265  // 需根据实际情况替换
266  let userId: number = 100;
267  await osAccount.getAccountManager().getOsAccountDomainInfo(userId)
268    .then((domainAccountInfo: osAccount.DomainAccountInfo) => {
269      accountInfo2 = domainAccountInfo;
270    }).catch((err: BusinessError) => {
271      console.error(`Failed to get account domain info. Code: ${err.code}, message: ${err.message}`);
272    })
273  try {
274    accountManager.setDomainAccountPolicy(wantTemp, accountInfo2, policy);
275    console.info('Succeeded in setting domain account policy.');
276  } catch (err) {
277    console.error(`Failed to set domain account policy. Code: ${err.code}, message: ${err.message}`);
278  }
279}
280```
281
282
283
284## accountManager.getDomainAccountPolicy<sup>19+</sup>
285
286getDomainAccountPolicy(admin: Want, domainAccountInfo: osAccount.DomainAccountInfo): DomainAccountPolicy
287
288获取域账号策略。
289
290**需要权限:** ohos.permission.ENTERPRISE_SET_ACCOUNT_POLICY
291
292**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
293
294**设备行为差异:** 该接口在PC/2in1设备中可正常调用,在其他设备中返回801错误码。
295
296**模型约束:** 此接口仅可在Stage模型下使用。
297
298**参数:**
299
300| 参数名            | 类型                                                         | 必填 | 说明                                                         |
301| ----------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
302| admin             | [Want](../apis-ability-kit/js-apis-app-ability-want.md)      | 是   | 企业设备管理扩展组件。                                       |
303| domainAccountInfo | [osAccount.DomainAccountInfo](../apis-basic-services-kit/js-apis-osAccount.md#domainaccountinfo8) | 是   | 域账号信息。<br />若传入的domainAccountInfo内部属性均为空,则查询全局域账号策略。<br />若传入的domainAccountInfo内部属性不为空,则查询指定域账号策略。<br />**说明**:若查询指定域账号策略,DomainAccountInfo的serverConfigId字段必填。 |
304
305**返回值:**
306
307| 类型                                                         | 说明                 |
308| ------------------------------------------------------------ | -------------------- |
309| [DomainAccountPolicy](#domainaccountpolicy19) | 域账号策略。 |
310
311**错误码**:
312
313以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。
314
315| 错误码ID | 错误信息                                                     |
316| -------- | ------------------------------------------------------------ |
317| 9200001  | The application is not an administrator application of the device. |
318| 9200002  | The administrator application does not have permission to manage the device. |
319| 201      | Permission verification failed. The application does not have the permission required to call the API. |
320| 801      | Capability not supported. Failed to call the API due to limited device capabilities. |
321
322**示例:**
323
324```ts
325import { accountManager } from '@kit.MDMKit';
326import { Want } from '@kit.AbilityKit';
327import { BusinessError, osAccount } from '@kit.BasicServicesKit';
328
329async function getDomainAccountPolicy() {
330  let wantTemp: Want = {
331    // 需根据实际情况进行替换
332    bundleName: 'com.example.myapplication',
333    abilityName: 'EntryAbility'
334  };
335  let domainAccountPolicy: accountManager.DomainAccountPolicy = {};
336  // 查询全局域账号策略
337  let accountInfo: osAccount.DomainAccountInfo = {
338    domain: '',
339    accountName: '',
340    serverConfigId: ''
341  };
342  try {
343    domainAccountPolicy = accountManager.getDomainAccountPolicy(wantTemp, accountInfo);
344    console.info('Succeeded in getting global domain account policy.');
345  } catch (err) {
346    console.error(`Failed to get domain account policy. Code: ${err.code}, message: ${err.message}`);
347  }
348  // 查询指定域账号策略
349  let accountInfo2: osAccount.DomainAccountInfo = {
350    domain: '',
351    accountName: '',
352    serverConfigId: ''
353  };
354  // 需根据实际情况进行替换
355  let userId: number = 100;
356  await osAccount.getAccountManager()
357    .getOsAccountDomainInfo(userId)
358    .then((domainAccountInfo: osAccount.DomainAccountInfo) => {
359      accountInfo2 = domainAccountInfo;
360    })
361    .catch((err: BusinessError) => {
362      console.error(`Failed to get account domain info. Code: ${err.code}, message: ${err.message}`);
363    })
364  try {
365    domainAccountPolicy = accountManager.getDomainAccountPolicy(wantTemp, accountInfo2);
366    console.info('Succeeded in getting domain account policy.');
367  } catch (err) {
368    console.error(`Failed to get domain account policy. Code: ${err.code}, message: ${err.message}`);
369  }
370}
371```
372
373## DomainAccountPolicy<sup>19+</sup>
374
375域账号策略。
376
377**系统能力:** SystemCapability.Customization.EnterpriseDeviceManager
378
379| 名称                           | 类型   | 只读 | 可选 | 说明                                                         |
380| ------------------------------ | ------ | ---- | ---- |------------------------------------------------------------ |
381| authenticationValidityPeriod   | number | 否   | 是   |表示域账号认证Token的有效期(单位:s),取值范围是[-1,2147483647]。有效期起始时间为最后一次域账号的认证时间点,如登录、锁屏后解锁等。<br/>默认值为-1,表示Token永久有效。取值为0,表示Token立即失效。Token过期/失效后,用户进入系统时必须进行域账号认证,验证域账号和密码。 |
382| passwordValidityPeriod         | number | 否   | 是   |表示域账号密码有效期(单位:s),取值范围是[-1,2147483647],有效期起始时间为设备侧最后一次修改密码的时间点。<br/>默认值为-1,表示域账号密码永久有效。 |
383| passwordExpirationNotification | number | 否   | 是   |表示域账号密码过期前提示时间(单位:s),取值范围是[0,2147483647]。<br/>默认值为0,表示域账号密码过期不提示。<br/>**说明**:passwordExpirationNotification需与passwordValidityPeriod配合使用,当系统时间大于或等于(设备侧最后一次修改域账号密码时间 + passwordValidityPeriod - passwordExpirationNotification)时,会发页面通知提示密码即将过期。 |
384