Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O OpenID Connect permite que você solicite opcionalmente o retorno de requisições individuais do ponto de extremidade UserInfo e/ou no token de ID. Uma solicitação de declarações é representada como um objeto JSON que contém uma lista de declarações solicitadas. Consulte OpenID Connect Core 1.0 para obter mais detalhes.
O Biblioteca do Microsoft Authenticator (MSAL) para iOS e macOS permite solicitar declarações específicas em cenários de aquisição de token interativo e silencioso. Ele faz isso por meio do claimsRequest parâmetro.
Há vários cenários em que isso é necessário. Por exemplo:
- Solicitação de declarações fora do conjunto padrão para o seu aplicativo.
- Solicitação de combinações específicas das requisições padrão que não podem ser especificadas usando escopos para seu aplicativo. Por exemplo, se um token de acesso for rejeitado devido a declarações ausentes, o aplicativo poderá solicitar as declarações ausentes usando MSAL.
Note
O MSAL ignora o cache do token de acesso sempre que uma solicitação de declarações for especificada. É importante fornecer o parâmetro claimsRequest apenas quando declarações adicionais forem necessárias (em vez de sempre fornecer o mesmo parâmetro claimsRequest em cada chamada de API do MSAL).
claimsRequestpode ser especificado emMSALSilentTokenParameters:MSALInteractiveTokenParameters
/*!
MSALTokenParameters is the base abstract class for all types of token parameters (silent and interactive).
*/
@interface MSALTokenParameters : NSObject
/*!
The claims parameter that needs to be sent to authorization or token endpoint.
If claims parameter is passed in silent flow, access token will be skipped and refresh token will be tried.
*/
@property (nonatomic, nullable) MSALClaimsRequest *claimsRequest;
@end
MSALClaimsRequest pode ser construído a partir de uma representação em NSString de uma solicitação JSON Claims.
Objective-C:
NSError *claimsError = nil;
MSALClaimsRequest *request = [[MSALClaimsRequest alloc] initWithJsonString:@"{\"id_token\":{\"auth_time\":{\"essential\":true},\"acr\":{\"values\":[\"urn:mace:incommon:iap:silver\"]}}}" error:&claimsError];
Swift:
var requestError: NSError? = nil
let request = MSALClaimsRequest(jsonString: "{\"id_token\":{\"auth_time\":{\"essential\":true},\"acr\":{\"values\":[\"urn:mace:incommon:iap:silver\"]}}}",
error: &requestError)
Ele também pode ser modificado solicitando declarações específicas adicionais:
Objective-C:
MSALIndividualClaimRequest *individualClaimRequest = [[MSALIndividualClaimRequest alloc] initWithName:@"custom_claim"];
individualClaimRequest.additionalInfo = [MSALIndividualClaimRequestAdditionalInfo new];
individualClaimRequest.additionalInfo.essential = @1;
individualClaimRequest.additionalInfo.value = @"myvalue";
[request requestClaim:individualClaimRequest forTarget:MSALClaimsRequestTargetIdToken error:&claimsError];
Swift:
let individualClaimRequest = MSALIndividualClaimRequest(name: "custom-claim")
let additionalInfo = MSALIndividualClaimRequestAdditionalInfo()
additionalInfo.essential = 1
additionalInfo.value = "myvalue"
individualClaimRequest.additionalInfo = additionalInfo
do {
try request.requestClaim(individualClaimRequest, for: .idToken)
} catch let error as NSError {
// handle error here
}
MSALClaimsRequest deve então ser definido nos parâmetros do token e fornecido para uma das APIs de aquisição de token da MSAL:
Objective-C:
MSALPublicClientApplication *application = ...;
MSALWebviewParameters *webParameters = ...;
MSALInteractiveTokenParameters *parameters = [[MSALInteractiveTokenParameters alloc] initWithScopes:@[@"user.read"]
webviewParameters:webParameters];
parameters.claimsRequest = request;
[application acquireTokenWithParameters:parameters completionBlock:completionBlock];
Swift:
let application: MSALPublicClientApplication!
let webParameters: MSALWebviewParameters!
let parameters = MSALInteractiveTokenParameters(scopes: ["user.read"], webviewParameters: webParameters)
parameters.claimsRequest = request
application.acquireToken(with: parameters) { (result: MSALResult?, error: Error?) in ...