# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
name=Nome
any.edit=Modifica ${name}
any.new=Nuova App Client
any.finish=Invia ${name}
any.cancel=Annulla ${name}
clientId=Client Id
entityId=Entity Id
serviceId=Service Id
clientAppId=Id
redirectUris=URI di Redirect
logout=Logout
signAssertions=Firma Assertion
signResponses=Firma Response
encryptionOptional=Cifratura Opzionale
encryptAssertions=Cifratura Assertion
requiredNameIdFormat=Formato NameId
clientSecret=Client Secret
signIdToken=Firma IdToken
jwtAccessToken=JWT Access Token
subjectType=Tipo Subject
supportedGrantTypes=Grant Type Supportati
supportedResponseTypes=Response Type Supportati
logoutUri=URI di Logout
metadataLocation=Metadata Location
metadataSignatureLocation=Metadata Signature Location
requiredAuthenticationContextClass=Authentication Context Class
skewAllowance=Skew Allowance
nameIdQualifier=NameId Qualifier
assertionAudiences=Assertion Audiences
serviceProviderNameIdQualifier=Service Provider NameId Qualifier
signingSignatureAlgorithms=Signing Signature Algorithms
signingSignatureReferenceDigestMethods=Signing Signature Reference Digest Methods
encryptionDataAlgorithms=Encryption Data Algorithms
encryptionKeyAlgorithms=Encryption Key Algorithms
signingSignatureBlackListedAlgorithms=Signing Signature BlackListed Algorithms
encryptionBlackListedAlgorithms=Encryption BlackListed Algorithms
description=Descrizione
theme=Tema
authPolicy=Politica Autenticazione
accessPolicy=Politica Accesso
attrReleasePolicy=Politica Rilascio Attributi
properties.title=Propriet\u00e0 di ${name}
type_extensions.title=propriet\u00e0
