Configurar o chaveiro

Quando a Biblioteca de Autenticação da Microsoft (MSAL) para iOS e macOS autentica um utilizador, ou renova um token, tenta armazenar os tokens em cache no Porta-chaves. A cache de tokens no chaveiro permite que a MSAL forneça login único silencioso (SSO) entre várias aplicações distribuídas pelo mesmo programador Apple. O SSO é alcançado através da funcionalidade de grupos de acesso ao porta-chaves. Para mais informações, consulte a documentação dos Itens do Porta-Chaves da Apple.

Este artigo explica como configurar os direitos da aplicação para que o MSAL possa gravar tokens em cache no porta-chaves do iOS e do macOS.

Grupo de acesso padrão ao porta-chaves

iOS

O MSAL no iOS usa o grupo de acesso com.microsoft.adalcache por defeito. Isto garante a melhor experiência SSO entre várias aplicações do mesmo editor.

No iOS, adicione o grupo de porta-chaves com.microsoft.adalcache às permissões da sua aplicação no Xcode, em Definições do projeto>Capacidades>Partilha de porta-chaves.

macOS

No macOS, o MSAL utiliza, por predefinição, o grupo de acesso com.microsoft.identity.universalstorage.

No macOS, adicione o grupo de porta-chaves com.microsoft.identity.universalstorage às permissões da sua aplicação no Xcode, em Definições do projeto>Capacidades>Partilha de porta-chaves, tal como no iOS.

Grupo de acesso personalizado ao porta-chaves

Se quiseres usar um grupo de acesso diferente ao porta-chaves, podes passar o teu grupo personalizado ao criar MSALPublicClientApplicationConfig antes de criar MSALPublicClientApplication, assim:

MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"your-client-id"
                                                                                            redirectUri:@"your-redirect-uri"
                                                                                              authority:nil];
    
config.cacheConfig.keychainSharingGroup = @"custom-group";
    
MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:nil];
    
// Now call `acquiretoken`. 
// Tokens will be saved into the "custom-group" access group
// and only shared with other applications declaring the same access group

Desativar a partilha do porta-chaves

Se não quiser partilhar o estado do SSO entre várias aplicações, ou usar qualquer grupo de acesso a chaves, desative a partilha de chaves passando o ID do pacote de aplicações como o seu Keychain Group:

config.cacheConfig.keychainSharingGroup = [[NSBundle mainBundle] bundleIdentifier];

Tratar o erro -34018 (falha ao guardar o item no porta-chaves)

Erro -34018 normalmente significa que o porta-chaves não foi configurado corretamente. Certifique-se de que o grupo de acesso ao porta-chaves configurado no MSAL corresponde ao configurado nos entitlements.

Certifique-se de que a sua candidatura está devidamente assinada

No macOS, as aplicações podem ser executadas sem serem assinadas pelo programador. Embora a maior parte da funcionalidade da MSAL continue a funcionar, o acesso SSO através do keychain requer que a aplicação seja assinada. Se estiveres a receber várias mensagens do Porte-chaves, certifica-te de que a assinatura da tua app é válida.

Passos seguintes

Saiba mais sobre grupos de acesso a porta-chaves no artigo da Apple sobre Partilha de Acesso a Itens de Porta-Chaves Entre uma Coleção de Aplicações .