Microsoft Authentication Library (MSAL) for Android 使用教程
项目介绍
Microsoft Authentication Library (MSAL) for Android 是一个用于 Android 应用程序的库,它使开发者能够通过 Microsoft 身份平台(前身为 Azure Active Directory)验证用户并访问受保护的 Web API。MSAL for Android 支持 OAuth2 和 OpenID Connect 协议,适用于公共客户端和机密客户端应用程序。
项目快速启动
创建项目
- 打开 Android Studio 并选择“Start a new Android Studio project”。
- 选择“Basic Activity”并点击“Next”。
- 输入应用程序名称,例如
MSALAndroidapp
,并记录包名以供后续步骤使用。 - 将语言从 Kotlin 改为 Java。
- 设置最低 SDK API 级别为 API 16 或更高,然后点击“Finish”。
注册应用程序
- 登录到 Microsoft Entra 管理中心的“应用注册”页面。
- 创建新注册,并记录应用程序 ID(客户端 ID)。
添加 MSAL 依赖
在 build.gradle
文件中添加以下依赖:
dependencies {
implementation 'com.microsoft.identity.client:msal:4.9+'
}
同时,在 repositories
部分添加以下内容:
repositories {
maven {
url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
}
}
配置 MSAL
创建一个 MSAL 配置文件 msal_config.json
并将其放在 res/raw
目录下:
{
"client_id": "YOUR_CLIENT_ID",
"redirect_uri": "YOUR_REDIRECT_URI",
"authorities": [
{
"type": "AAD",
"audience": {
"type": "AzureADMyOrg",
"tenant_id": "YOUR_TENANT_ID"
}
}
]
}
初始化 MSAL
在 MainActivity.java
中初始化 MSAL:
import com.microsoft.identity.client.PublicClientApplication;
import com.microsoft.identity.client.AuthenticationCallback;
import com.microsoft.identity.client.exception.MsalException;
public class MainActivity extends AppCompatActivity {
private PublicClientApplication publicClientApplication;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
publicClientApplication = new PublicClientApplication(
this,
R.raw.msal_config
);
// 调用登录方法
login();
}
private void login() {
publicClientApplication.acquireToken(getActivity(), SCOPES, getAuthenticationCallback());
}
private AuthenticationCallback getAuthenticationCallback() {
return new AuthenticationCallback() {
@Override
public void onSuccess(IAuthenticationResult authenticationResult) {
// 处理成功登录
}
@Override
public void onError(MsalException exception) {
// 处理登录错误
}
@Override
public void onCancel() {
// 处理用户取消登录
}
};
}
}
应用案例和最佳实践
应用案例
MSAL for Android 可用于各种场景,包括但不限于:
- 企业内部应用的身份验证和授权。
- 访问 Microsoft Graph API 以获取用户数据。
- 实现单点登录(SSO)以提高用户体验。
最佳实践
- 安全配置:确保
msal_config.json
文件中的配置信息安全,不要将其提交到公共代码仓库。 - 错误处理:在
AuthenticationCallback
中详细处理各种错误情况,以提高应用的稳定性。 - 权限管理:合理管理应用所需的权限,避免请求不必要的权限。
典型生态项目
MSAL for Android 通常与其他 Microsoft 技术和服务结合使用,例如:
- Microsoft Graph API:用于访问和操作 Microsoft 365 数据。
- Azure AD B2C:用于实现面向