Description
New Feature / Enhancement Checklist
- [x ] I am not disclosing a vulnerability.
- [x ] I am not just asking a question.
- [x ] I have searched through existing issues.
Current Limitation
Currently, setAccessGroup()
enables *.parseswift.sdk
services to be manually accessed through keychain sharing, but if someone wants to login to multiple apps with a single Parse login, it is not possible.
Feature / Enhancement Description
If devs want to enable login to multiple apps with a single Parse login, we need to be able to set the service name, not automatically to "*.parseswift.sdk"
It could be something like: setAccessGroup
@discardableResult static public func setAccessGroup(_ accessGroup: String?, service: String?,
synchronizeAcrossDevices: Bool) throws -> Bool /// Setting kSecAttrService as service.
// Call the method
do {
try ParseSwift.setAccessGroup("name.of.access.group", service: "com.pmmlo.foo", synchronizeAcrossDevices: false)
} catch {
// Handle error
}
Importantly, it cannot be a simple duplication of the accessGroup
string, because in some cases, the appPrefix must be added to the accessGroup, while it may not be desired in the service name.
Example Use Case
Alternatives / Workarounds
There is currently no way that I see to allow login to multiple apps with Parse-Swift by logging in to one of the family of apps.
3rd Party References
Not from an open-source or SDK-side. From a consumer product, there are a number of enterprise suite apps that implement this in slightly different ways, usually with a proprietary, server-side client verification. An example off the top of my head is iCloud, I believe logs you in to mail, calendar, and other apps.