Android Microsoft 身份验证库(MSAL)附带了一个默认配置 JSON 文件,用于定义公共客户端应用的行为,例如默认颁发机构、你将使用的权限等。
本文将帮助你了解配置文件中的各种设置,以及如何指定要在基于 MSAL 的应用中使用的配置文件。
配置参数
常规设置
| 财产 | 数据类型 | 必选 | 备注 |
|---|---|---|---|
client_id |
String | Yes | 应用程序注册页中的应用的客户端 ID |
redirect_uri |
String | Yes | 应用程序注册页中的应用的重定向 URI |
broker_redirect_uri_registered |
布尔 | No | 可能的值: truefalse |
authorities |
列出<颁发机构> | No | 应用所需的颁发机构列表 |
authorization_user_agent |
AuthorizationAgent (枚举) | No | 可能的值:DEFAULT、、 BROWSERWEBVIEW |
http |
HttpConfiguration | No | 配置 HttpUrlConnectionconnect_timeout 和 read_timeout |
logging |
日志记录配置 | No | 指定日志记录详细信息级别。 可选配置包括: pii_enabled采用布尔值,以及 log_level采用 ERROR、 WARNING、 INFO或 VERBOSE。 |
客户编号
注册应用程序时创建的客户端 ID 或应用 ID。
重定向URI
注册应用程序时注册的重定向 URI。 如果重定向 URI 是代理应用,请参阅 公共客户端应用的重定向 URI ,以确保使用代理应用的正确重定向 URI 格式。
broker_redirect_uri_registered
如果要使用中转身份验证,则必须将 broker_redirect_uri_registered 属性设置为 true。 在中转身份验证方案中,如果应用程序的格式不正确,无法按照 公共客户端应用程序的重定向 URI 中所述与中转站通信,则应用程序会验证重定向 URI,并在启动时引发异常。
authorities
已知和信任的颁发机构列表。 除了此处列出的当局外,MSAL 还查询Microsoft获取已知Microsoft云和当局的列表。 在此颁发机构列表中,指定颁发机构的类型和任何其他可选参数,例如 "audience",应根据应用的注册与应用的受众保持一致。 下面是引文示例列表:
// Example AzureAD and Personal Microsoft Account
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
},
"default": true // Indicates that this is the default to use if not provided as part of the acquireToken call
},
// Example AzureAD My Organization
{
"type": "AAD",
"audience": {
"type": "AzureADMyOrg",
"tenant_id": "contoso.com" // Provide your specific tenant ID here
}
},
// Example AzureAD Multiple Organizations
{
"type": "AAD",
"audience": {
"type": "AzureADMultipleOrgs"
}
},
//Example PersonalMicrosoftAccount
{
"type": "AAD",
"audience": {
"type": "PersonalMicrosoftAccount"
}
}
将Microsoft Entra颁发机构与受众映射到Microsoft 标识平台终结点
| 类型 | 受众 | 租户 ID | Authority_Url | 生成的终结点 | 备注 |
|---|---|---|---|---|---|
| Microsoft Entra ID | Azure AD 和个人 Microsoft 帐户 | https://login.microsoftonline.com/common |
common 是帐户所在的租户别名。 例如特定的Microsoft Entra租户或Microsoft 帐户系统。 |
||
| Microsoft Entra ID | AzureADMyOrg | contoso.com | https://login.microsoftonline.com/contoso.com |
只有 contoso.com 中存在的帐户才能获取令牌。 任何已验证的域或租户 GUID 都可用作租户 ID。 | |
| Microsoft Entra ID | AzureADMultipleOrgs | https://login.microsoftonline.com/organizations |
只有Microsoft Entra帐户可用于此终结点。 Microsoft帐户可以是组织的成员。 若要使用组织中资源的Microsoft 帐户获取令牌,请指定要从中获取令牌的组织租户。 | ||
| Microsoft Entra ID | 个人 Microsoft 帐户 | https://login.microsoftonline.com/consumers |
只有Microsoft帐户才能使用此终结点。 | ||
| B2C | 请参阅生成的终结点 | https://login.microsoftonline.com/tfp/contoso.onmicrosoft.com/B2C_1_SISOPolicy/ |
只有 contoso.onmicrosoft.com 租户中存在的帐户才能获取令牌。 在此示例中,B2C 策略是颁发机构 URL 路径的一部分。 |
注释
无法在 MSAL 中启用和禁用颁发机构验证。
作为开发人员,颁发机构要么通过配置指定,要么通过元数据Microsoft已知。
如果 MSAL 向未知颁发机构收到令牌请求, MsalClientException 则类型 UnknownAuthority 为结果。
中转身份验证不适用于 Azure AD B2C。
颁发机构属性
| 财产 | 数据类型 | 必选 | 备注 |
|---|---|---|---|
type |
String | Yes | 镜像应用目标受众或帐户类型。 可能的值: AADB2C |
audience |
Object | No | 仅当 type=AAD时适用。 指定应用目标标识。 使用应用注册中的值 |
authority_url |
String | Yes | 仅当 type=B2C时必需。 type=AAD的可选类型。 指定应用应使用的颁发机构 URL 或策略 |
default |
布尔 | Yes | 指定一个或多个颁发机构时,需要一 "default":true 个。 |
访问群体属性
| 财产 | 数据类型 | 必选 | 备注 |
|---|---|---|---|
type |
String | Yes | 指定应用想要面向的受众。 可能的值:AzureADandPersonalMicrosoftAccount、PersonalMicrosoftAccount、AzureADMultipleOrgs、AzureADMyOrg |
tenant_id |
String | Yes | 仅当 ."type":"AzureADMyOrg" 对于其他 type 值,可选。 这可以是租户域,例如 contoso.com,或租户 ID,例如 aaaabbbb-0000-cccc-1111-dddd2222eeee |
authorization_user_agent
指示在登录帐户或授权访问资源时,是使用设备上的嵌入式 Web 视图还是默认浏览器。
可能的值:
-
DEFAULT:首选系统浏览器。 如果设备上没有浏览器,请使用嵌入式 Web 视图。 -
WEBVIEW:使用嵌入式 Web 视图。 -
BROWSER:在设备上使用默认浏览器。
multiple_clouds_supported
对于支持多个国家/地区云的客户端,请指定 true。 然后,在授权和令牌兑换期间,Microsoft 标识平台会自动重定向到正确的国家云。 可以通过检查与 AuthenticationResult登录帐户关联的机构来确定已登录帐户的国家云。 请注意,该 AuthenticationResult 地址不提供为其请求令牌的资源的国家云特定终结点地址。
broker_redirect_uri_registered
一个布尔值,指示是否使用与代理内重定向 URI 兼容的Microsoft标识代理。 如果不想在应用中使用中转站,请设置为 false ”
如果使用设置为“受众”"MicrosoftPersonalAccount"的Microsoft Entra颁发机构,则不会使用中转站。
http
为 HTTP 超时配置全局设置,例如:
| 财产 | 数据类型 | 必选 | 备注 |
|---|---|---|---|
connect_timeout |
int | No | 时间(以毫秒为单位) |
read_timeout |
int | No | 时间(以毫秒为单位) |
记录
以下全局设置用于日志记录:
| 财产 | 数据类型 | 必选 | 备注 |
|---|---|---|---|
pii_enabled |
布尔 | No | 是否发出个人数据 |
log_level |
字符串 | No | 要输出哪些日志消息。 支持的日志级别包括ERROR、WARNING和INFOVERBOSE。 |
logcat_enabled |
布尔 | No | 是否输出到记录 cat 以及日志记录接口 |
account_mode
指定一次可在应用中使用多少个帐户。 可能的值为:
-
MULTIPLE(默认) SINGLE
PublicClientApplication使用与此设置不匹配的帐户模式构造将导致异常。
有关单帐户和多个帐户之间的差异的详细信息,请参阅 单帐户和多个帐户应用。
browser_safelist
与 MSAL 兼容的浏览器的允许列表。 这些浏览器正确处理到自定义意向的重定向。 可以添加到此列表。 默认配置如下所示。 ``
默认 MSAL 配置文件
MSAL 附带的默认 MSAL 配置如下所示。 可以在GitHub上查看最新版本。
此配置由你提供的值进行补充。 提供的值将替代默认值。
{
"authorities": [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
},
"default": true
}
],
"authorization_user_agent": "DEFAULT",
"multiple_clouds_supported": false,
"broker_redirect_uri_registered": false,
"http": {
"connect_timeout": 10000,
"read_timeout": 30000
},
"logging": {
"pii_enabled": false,
"log_level": "WARNING",
"logcat_enabled": false
},
"shared_device_mode_supported": false,
"account_mode": "MULTIPLE",
"browser_safelist": [
{
"browser_package_name": "com.android.chrome",
"browser_signature_hashes": [
"7fmdu...2NDJg=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "45"
},
{
"browser_package_name": "com.android.chrome",
"browser_signature_hashes": [
"7fmdu...2NDJg=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"2gCe6...idpVQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.firefox",
"browser_signature_hashes": [
"2gCe6...idpVQ=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "57"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"ABi2f...4O1Xgg=="
],
"browser_use_customTab" : true,
"browser_version_lower_bound": "4.0"
},
{
"browser_package_name": "com.sec.android.app.sbrowser",
"browser_signature_hashes": [
"ABi2f...O1Xgg=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.cloudmosa.puffinFree",
"browser_signature_hashes": [
"1WqG8...Mn8Ag=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.duckduckgo.mobile.android",
"browser_signature_hashes": [
"S5Av4...jAi4Q=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.explore.web.browser",
"browser_signature_hashes": [
"BzDzB...YHCag=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.ksmobile.cb",
"browser_signature_hashes": [
"lFDYx...7nouw=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.microsoft.emmx",
"browser_signature_hashes": [
"Ivy-R...A6fVQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.opera.browser",
"browser_signature_hashes": [
"FIJ3I...jWJWw=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "com.opera.mini.native",
"browser_signature_hashes": [
"TOTyH...mmUYQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "mobi.mgeek.TunnyBrowser",
"browser_signature_hashes": [
"RMVoX...bkyyQ=="
],
"browser_use_customTab" : false
},
{
"browser_package_name": "org.mozilla.focus",
"browser_signature_hashes": [
"L72dT...q0oYA=="
],
"browser_use_customTab" : false
}
]
}
示例基本配置
以下示例演示了一个基本配置,该配置指定客户端 ID、重定向 URI、是否注册代理重定向以及颁发机构列表。
{
"client_id" : "00001111-aaaa-2222-bbbb-3333cccc4444",
"redirect_uri" : "msauth://com.microsoft.identity.client.sample.local/1wIqXSqBj7w%2Bh11ZifsnqwgyKrY%3D",
"broker_redirect_uri_registered": true,
"authorities" : [
{
"type": "AAD",
"audience": {
"type": "AzureADandPersonalMicrosoftAccount"
}
"default": true
}
]
}
如何使用配置文件
创建配置文件。 建议在 . 中
res/raw/auth_config.json创建自定义配置文件。 但你可以把它放在你想要的任何地方。在构造
PublicClientApplication配置时,告诉 MSAL 在何处查找配置。 例如://On Worker Thread IMultipleAccountPublicClientApplication sampleApp = null; sampleApp = new PublicClientApplication.createMultipleAccountPublicClientApplication(getApplicationContext(), R.raw.auth_config);