Wednesday, 6 November 2013

SSO Application in Android


In my previous blog , I talked about SSO and OAuth2.0 protocol from a developer's point of view. Here we will discuss how to create an SSO application Android. Those who are not interested in SSO can consider this as an introduction to Android services.

Why not Android library?

If the question is to share a few data such as access token, refresh token or ttl, why can't we use an Android library so that each app can import this library and use various APIs? To answer this question we need to understand various storage options in Android for the requirement we have.


Assume that there are 2 apps, App1 and App2. If you have logged-in from App1, App2 should not ask for authentication as it is already done. It just has to fetch the access token obtained as part of login process which happened from App1. So the requirement is to save a few data such as access token, refresh token and ttl in a location where App1 and App2 will be able to read/write.
  1. SharedPreferences:MODE_WORLD_WRITEABLE
    • All other apps need to know the package name of the app that created the data to create PackageContext. This is not feasible as any app can create/update/read data.
  2. ContentProviders
    • ContentProviders are basically meant for one app creates data and other apps subscribe to it using Content_Uri. In addition to that, ContentProviders has to be present in each app. There can not be 2 content providers with same name in a device.
  3. Network connection
    • This will not work as data has to be stored locally
  4. Internal storage
    • Data is available to only inside the specific application. App2 cannot read/write data in App1 and vice versa.
  5. External storage
    • Saves the data in an SD card. This option may work but there is no security to the data as it is publicly available in SD card and a third party app can use it for getting access token and illegal access to its resource APIs. There are devices even without SD card.

SSO Application

You can create a separate application for login and storing data. App1 can ask SSO app to login and store the data inside. App2 can ask SSO app to get access token stored as part of login. This can be achieved by a mechanism called Service, which is one of basic building block of Android. You can also apply permission to service so that only those applications which are given specific permission will be able to access SSO services.

App1 and App2 has to explicitly bind to the specific service. Since client apps need data back from SSO service, a messenger has to be associated with replyTo attribute. And inside IncomingHandler check for what parameter and extract the required data from response.

Happy coding!

1 comment:

  1. bang, đồng thời đào tạo ra những thực lực tinh nhuệ cho tương lai, những thực lực này Nhạc Thành tin rằng sớm muộn gì cũng có lúc dùng tới.
    đồng tâm
    game mu
    cho thuê phòng trọ
    cho thuê phòng trọ
    nhac san cuc manh
    tư vấn pháp luật qua điện thoại
    văn phòng luật
    số điện thoại tư vấn luật
    dịch vụ thành lập doanh nghiệp
    Mà thế lực tinh nhuệ nhất không thể nghi ngờ chính là đấu khí học viện này, về phần thực lực của Đổng Đại Ngưu và Thác Ni Tư trong Quỷ Uyên Nhạc Thành mặc dù rất coi trọng nhưng những người kia cũng chỉ là thực lực bên ngoài của hắn mà thôi.

    Ngay tại sáng sớm hôm đó, Nhạc Thành triệu tập tất cả người của Phá Quân Bang, bao gồm hai trăm mười sáu người không tính ngũ nữ thì lục tinh Đấu vương có một người, ngũ tinh Đấu vương có ba người, tứ tinh Đấu vương có sáu người, tam tinh đấu vư có mười lăm người, nhị tinh đấu vương có hai mươi tám người nhất tinh đấu vương có bốn mươi ba người, tất cả cao thủ đấu vương cộng lại là chín mươi sáu người.

    Chín mươi sáu đấu vương, đội hình như vậy đủ để Nhạc Thành xưng bá, tuy nhiên ở trong Đấu khí học viện, thực lực của Phá quân bang cũng chỉ xếp thứ nhất mà thôi không đủ để áp đảo quần hùng.