Skip to main content

API Rest - Autenticazione su Digital Archive

 

L'invio di una richiesta di autenticazione è documentata via SWAGGER al link

/swagger/ui/index#!/UserAuthentication/UserAuthentication_BasicAuthentication

L'autenticazione può essere effettuata effettuata attraverso la chiamata al servizio

PRODUZIONE: [POST] https://cct-wcf.teamsystem.com/knos/wcf/CS/api/UserAuthentication/BasicAuthentication

TEST: [POST] https://cct-wcf-test.teamsystem.com/knos/wcf/CS/api/UserAuthentication/BasicAuthentication

Durante il processo di autenticazione devono essere fornite le informazioni di accesso (utente e password) di Digital Archive

 

Ogni utente personale registrato in TSDigital e le sue chiavi tecniche personali possiedono di default i permessi necessari per creare item. Una chiave tecnica applicativa non ha il permesso di creare nuovi item a meno che non sia esplicitamente richiesto.

Header

Non sono richiesti.

Il Content-Type deve essere application/json

Body

Il body della richiesta deve avere il seguente formato:

{
  "UserName": "string",
  "Password": "string",
  "Options": [
    {
      "Name": "string",
      "Value": "string"
    }
  ]
}
  • Username: contiene username dell'utenza che deve effettuare il login.
  • Password: contiente la password dell'utenza scelta per il login.
  • Options: non sono necessari, previsti per future implementazioni

Risposte

L'operazione è avvenuta con successo se e solo se il codice HTTP della risposta è 200. Ogni altro codice di risposta indica uno stato di errore.

HTTP 200

L'operazione è avvenuta con successo e viene rilasciato il SecurityToken da utilizzare per l'autenticazione nelle chiamate alle API rest. Da considerare anche il PasswordExpirationDate che che rappresenta la data di scadenza della password.

E' fondamentale valutare PasswordExpirationDate in quanto se rappresenta una data precedente alla data corrente implica che il token rilasciato è valido solo per effettuare il cambio password. In tal caso affidarsi al portale e alle pagine del front end per effettuare il cambio password.  Tutte le chiamate effettuate con un token rilasciato da password scaduta andranno in errore.

Body della risposta:

{
  "UserIdentity": {
    "SecurityToken": "string",
    "PasswordExpirationDate": "2022-02-14T08:48:20.753Z"
  },
  "ServiceInfo": {
    "ServiceVersion": "string",
    "Info": [
      {
        "Name": "string",
        "Value": "string"
      }
    ]
  }
}
    id: identificativo dell'item creato
    HTTP 400

    Uno o più parametri forniti nella richiesta sono errati, o mancano dei parametri obbligatori.

    {
      "code": 400,
      "status": "BADREQUEST",
      "error": "BadRequest",
      "message": "I parametri username e password sono obbligatori",
      "timestamp": "2022-02-14T12:20:47.9466829+01:00"
    }
    HTTP 401

    IlLe tokencredenziali autorizzativofornite ènon scaduto,sono invalidocorrette.

    {
      "code": 401,
      "status": "UNAUTHORIZED",
      "error": "Unauthorized",
      "message": "Username o nonpassword èerrati.",
      stato"timestamp": specificato."2022-02-14T10:45:44.1219662+01:00"
    
    HTTP 403

    Il token autorizzativo fornito è valido, ma l'utente non ha i permessi necessari a creare un item

    }

    HTTP 500

    Il server ha riscontrato un errore inaspettato nell'esecuzione della richiesta di creazione item

    item.
    HTTPNel 502

    Il server ha riscontrato un errore inaspettato nel comunicare con un servizio dal quale dipende per poter completarecaso il processoproblema (adsi esempio,ripeta ilcontattare servizio di auth non risulta essere disponibile)l'assistenza.

    Tutte le risposte d'errore condividono il seguente formato per il body di risposta: 

    {
      "Message": "An error has occurred.",
      "ExceptionMessage": "Username o password errati.",
      "ExceptionType": "KnosCS.Exceptions.KnosException",
      "StackTrace": "   at KnosCS.Providers.Implementations.UserAuthenticationService.BasicAuthentication(BasicUserAuthenticationData authenticationData, String callerKey)\r\n   at KnosCS.Business.Implementations.UserManager.Authenticate(BasicUserAuthenticationData authenticationData, String callerKey)\r\n   at Teamsystem.CCT.WCF.Services.UserAuthentication.BasicAuthentication(BasicAuthenticationInputDC BasicAuthentication)\r\n   at lambda_method(Closure , Object , Object[] )\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_2.<GetExecutor>b__2(Object instance, Object[] methodParameters)\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()",
      "InnerException": {
        "Message": "An error has occurred.",
        "ExceptionMessage": "106 - Presenti errori - <error ExceptionId=\"b8f8d281-0648-44cd-8e8c-9ff28a15e3bd\" Number=\"106\" Description=\"Utente o password errati\" Source=\"[BackEndTest01] Login\"  />",
        "ExceptionType": "System.Exception",
        "StackTrace": null
      }
    }
      code: corrisponde al codice d'errore HTTP ritornato (es: 500) message: messaggio d'errore (es: Errore interno del server) status: descrizione a parole del codice d'errore HTTP (es: Internal Server Error) subErrors: eventuali errori innestati in quello ritornato timestamp: data ed ora di ritorno dell'errore