Android Microsoft 驗證資源庫(MSAL)附帶一個預設的設定 JSON 檔案,你可以自訂它來定義公共客戶端應用程式的行為,例如預設權限、使用權限等。
本文將幫助你了解設定檔中的各種設定,以及如何指定該設定檔用於你的 MSAL 應用程式。
組態設定
一般設定
| 房產 | 數據類型 | 必要 | Notes |
|---|---|---|---|
client_id |
String | Yes | 你應用程式的客戶 ID 來自 應用程式註冊頁面 |
redirect_uri |
String | Yes | 您的應用程式從申請註冊頁面重新導向 URI |
broker_redirect_uri_registered |
布林值 | No | 可能的值: true、 false |
authorities |
名單<權威> | No | 你的應用程式需要的權限清單 |
authorization_user_agent |
授權代理(列舉) | No | 可能的值:DEFAULT、、 BROWSERWEBVIEW |
http |
HttpConfiguration | No | 配置 HttpUrlConnectionconnect_timeout 與 read_timeout |
logging |
日誌記錄配置 | No | 指定記錄細節層級。 可選配置包括:pii_enabled,取布林值,及log_level,取 ERROR、 WARNINGINFOVERBOSE、 或 。 |
client_id (客戶識別碼)
就是你註冊應用程式時建立的客戶 ID 或應用程式 ID。
重定向網址 (redirect_uri)
你註冊申請時註冊的重定向 URI。 如果重定向 URI 是指向經紀商應用程式,請參考公開 客戶端應用程式的重定向 URI ,以確保你使用的是正確的重定向 URI 格式。
broker_redirect_uri_registered
如果你想使用經紀驗證, broker_redirect_uri_registered 屬性必須設定為 true。 在經紀式認證情境中,如果應用程式格式不正確,無法像公開 客戶端應用程式的 Redirect 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 身分識別平台 endpoints
| 類型 | 觀眾 | 租戶識別碼 | Authority_Url | 結果終點 | Notes |
|---|---|---|---|---|---|
| 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 路徑的一部分。 |
Note
權限驗證在 MSAL 中無法啟用或停用。
權威機構要麼是你透過設定指定的開發者,要麼是透過元資料對 Microsoft 來說是認識的。
如果 MSAL 收到一個未知權威的令牌請求,會產生 一個 MsalClientException 型別 UnknownAuthority 。
經紀認證在 Azure AD B2C 上無法運作。
權威屬性
| 房產 | 資料類型 | 必要 | Notes |
|---|---|---|---|
type |
String | Yes | 鏡像你的應用程式目標受眾或帳號類型。 可能的值: AAD、 B2C |
audience |
Object | No | 僅在類型=AAD時適用。 指定你的應用程式所鎖定的身份。 使用你應用程式註冊的數值 |
authority_url |
String | Yes | 僅在類型=B2C時才需要。 類型=AAD可選。 指定你的應用程式應該使用的權威網址或政策 |
default |
布林值 | Yes | 當指定一個或多個權威時,則需提供單一 "default":true 授權。 |
觀眾資產
| 房產 | 數據類型 | 必要 | Notes |
|---|---|---|---|
type |
String | Yes | 指定你的應用程式想要鎖定的受眾。 可能的值:AzureADandPersonalMicrosoftAccount、、PersonalMicrosoftAccount、 AzureADMultipleOrgsAzureADMyOrg |
tenant_id |
String | Yes | 僅在 "type":"AzureADMyOrg"時才需要。 其他 type 價值則可選。 這可以是租戶網域,例如 contoso.com,或租戶識別碼,例如 aaaabbbb-0000-cccc-1111-dddd2222eeee |
authorization_user_agent
指示登入帳號或授權存取資源時,應使用嵌入式網頁檢視或裝置預設瀏覽器。
可能的值:
-
DEFAULT: 偏好系統瀏覽器。 如果裝置上沒有瀏覽器,會使用內嵌的網頁檢視。 -
WEBVIEW:使用嵌入的網頁檢視。 -
BROWSER:使用裝置上的預設瀏覽器。
multiple_clouds_supported
對於支援多個國家雲端的用戶端,請指定 true。 Microsoft 身分識別平台 在授權及代幣兌換過程中,會自動重新導向正確的國家雲端。 您可以透過查看與 AuthenticationResult該帳戶相關的權限來判斷該登入帳號的全國雲端。 請注意,它 AuthenticationResult 並未提供你申請令牌的資源的國家特定雲端端點地址。
broker_redirect_uri_registered
一個布林值,表示你是否使用與 Microsoft Identity 相容的代理商內重定向 URI。 如果你不想在應用程式內使用經紀人,就設為false
如果你使用 Microsoft Entra Authority,並將 Audience 設定為 "MicrosoftPersonalAccount",經紀人將不會被使用。
http
設定 HTTP 逾時的全域設定,例如:
| 房產 | 資料類型 | 必要 | Notes |
|---|---|---|---|
connect_timeout |
int | No | 時間以毫秒計 |
read_timeout |
int | No | 時間以毫秒計 |
記錄
以下全域設定用於記錄:
| 房產 | 數據類型 | 必要 | Notes |
|---|---|---|---|
pii_enabled |
布林值 | No | 是否要發布個人資料 |
log_level |
字串 | No | 哪些日誌要輸出訊息。 支援的對數層級包括 ERROR、WARNING、INFO、 VERBOSE和。 |
logcat_enabled |
布林值 | No | 是否除了日誌介面外,還要輸出到 log 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但你可以放在任何你想放的地方。告訴 MSAL 在建構
PublicClientApplication. 例如://On Worker Thread IMultipleAccountPublicClientApplication sampleApp = null; sampleApp = new PublicClientApplication.createMultipleAccountPublicClientApplication(getApplicationContext(), R.raw.auth_config);