SPIDlibraryAndroid is a library for logging in via SPID through several different identity providers.
- Android 4.4+
- Add dependency to your project:
repositories {
maven {
url = "https://maven.pkg.github.com/INPS-it/SPIDlibraryAndroid"
credentials {
username = GITHUB_USER
password = GITHUB_TOKEN
}
}
}
dependencies {
implementation("it.inps.spid:library:1.0.0")
}- Declare a variable to register the
IdentityProviderSelectorActivityContractcontract using theregisterForActivityResult(I)method which will give aSpidResultobject as a return value:
private val startSpidFlow = registerForActivityResult(IdentityProviderSelectorActivityContract()) { spidResult ->
when (spidResult.spidEvent) {
SpidEvent.GENERIC_ERROR -> { /* TODO */ }
SpidEvent.NETWORK_ERROR -> { /* TODO */ }
SpidEvent.SESSION_TIMEOUT -> { /* TODO */ }
SpidEvent.SPID_CONFIG_ERROR -> { /* TODO */ }
SpidEvent.SUCCESS -> { /* spidResult.spidReponse available */ }
SpidEvent.USER_CANCELLED -> { /* TODO */ }
}
}The SpidResult object consists of a SpidEvent object and an optional SpidResponse object. The SpidResponse object is only available in case of successful login.
- Create a
SpidConfigobject containing theauthPageUrlurl, thecallbackPageUrlurl and an optional timeoutintvalue (default value: 30sec):
val spidConfig = SpidConfig(
"https://<insert the auth url here>", // TODO
"https://<insert the callback url here>", // TODO
60
)- Use the
IdentityProvider.Builderbuilder to add the identity providers:
val idpList = IdentityProvider.Builder
.addAruba(idpParameter = "<insert the idp parameter here>")
.addPoste(idpParameter = "<insert the idp parameter here>")
.addTim(idpParameter = "<insert the idp parameter here>")
.addCustomIdentityProvider(
"CUSTOM IDENTITY PROVIDER",
R.drawable.ic_spid_idp_custom,
"<insert the idp parameter here>"
)
// TODO
.build()- Create a
SpidParamsobject using the spidConfig and idpList objects and call theActivityResultLauncher.launch(I)method:
startSpidFlow.launch(SpidParams(spidConfig, idpList))SPIDlibraryAndroid is released under the BSD 3-Clause License. See LICENSE for details.