如何在Android上实现单点登录

Lis*_*nne -4 android single-sign-on

我想在Android上实现单点登录.

我有一组移动应用程序需要与服务器通信才能识别用户.

当其中一个应用程序被识别为属于用户时,其他应用程序应该能够检测到该应用程序,而无需要求用户进一步识别.

因此,用户基本上只登录一个应用程序,所有其他应用程序将自动跟踪.

请问我怎么能做到这一点?

Log*_*kup 9

您可以使用登录的中央应用程序,并将其作为其他应用程序的服务进行调用.登录管理应用程序应具有标记有特定于应用程序的权限的服务(请参阅https://developer.android.com/guide/topics/manifest/permission-element.html),并应将该android:protectionLevel属性设置为signature; 例如在你的android清单中:

<permission android:name="com.example.SSO_ACCESS"
    android:protectionLevel="signature" />
Run Code Online (Sandbox Code Playgroud)

还有你的Android清单:

<service android:enabled="true"
    android:exported="true"
    android:name=".SingleSignOnService"
    android:permission="com.example.SSO_ACCESS" >
    . . .
</service>
Run Code Online (Sandbox Code Playgroud)

这将允许您创建的应用程序与登录应用程序的服务进行通信,但其他应用程序将无法进行通信.

您应该使用标准的Android服务技术与服务进行通信(使用bindService()适当的意图绑定到服务- 您需要在清单中为服务使用适当的意图过滤器) - 有关此信息,请参阅Android 服务指南.