import { Authlete } from "@authlete/typescript-sdk";
const authlete = new Authlete({
bearer: process.env["AUTHLETE_BEARER"] ?? "",
});
async function run() {
const result = await authlete.authorization.fail({
serviceId: "<id>",
authorizationFailRequest: {
ticket: "qA7wGybwArICpbUSutrf5Xc9-i1fHE0ySOHxR1eBoBQ",
reason: "NOT_AUTHENTICATED",
},
});
console.log(result);
}
run();require 'authlete_ruby_sdk'
Models = ::Authlete::Models
s = ::Authlete::Client.new(
bearer: '<YOUR_BEARER_TOKEN_HERE>'
)
res = s.authorization.fail_request(service_id: '<id>', authorization_fail_request: Models::Components::AuthorizationFailRequest.new(
ticket: 'qA7wGybwArICpbUSutrf5Xc9-i1fHE0ySOHxR1eBoBQ',
reason: Models::Components::AuthorizationFailRequestReason::NOT_AUTHENTICATED
))
unless res.authorization_fail_response.nil?
# handle response
endpackage main
import(
"context"
"os"
authlete "github.com/authlete/authlete-go-sdk"
"github.com/authlete/authlete-go-sdk/models/components"
"log"
)
func main() {
ctx := context.Background()
s := authlete.New(
authlete.WithSecurity(os.Getenv("AUTHLETE_BEARER")),
)
res, err := s.Authorization.Fail(ctx, "<id>", components.AuthorizationFailRequest{
Ticket: "qA7wGybwArICpbUSutrf5Xc9-i1fHE0ySOHxR1eBoBQ",
Reason: components.AuthorizationFailRequestReasonNotAuthenticated,
})
if err != nil {
log.Fatal(err)
}
if res.AuthorizationFailResponse != nil {
// handle response
}
}curl --request POST \
--url https://us.authlete.com/api/{serviceId}/auth/authorization/fail \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ticket": "<string>",
"description": "<string>"
}
'{
"resultCode": "A004201",
"resultMessage": "[A004201] The authorization request from the service does not contain 'parameters' parameter.",
"action": "BAD_REQUEST",
"responseContent": "{\\\"error_description\\\":\\\"[A004201] The authorization request from the service does not contain 'parameters' parameter.\\\",\\\"error\\\":\\\"invalid_request\\\",\\\"error_uri\\\":\\\"https://docs.authlete.com/#A004201\\\"}"
}{
"resultCode": "A001201",
"resultMessage": "[A001201] /auth/authorization, TLS must be used."
}{
"resultCode": "A001202",
"resultMessage": "[A001202] /auth/authorization, Authorization header is missing."
}{
"resultCode": "A001215",
"resultMessage": "[A001215] /auth/authorization, The client (ID = 26837717140341) is locked."
}{
"resultCode": "A001311",
"resultMessage": "[A001311] /auth/authorization, Too many requests, retry after 1 seconds. (Entity: 23769878923/87122303)"
}{
"resultCode": "A001101",
"resultMessage": "[A001101] /auth/authorization, Authlete Server error."
}Fail Authorization Request
This API generates a content of an error authorization response that the authorization server implementation returns to the client application.
import { Authlete } from "@authlete/typescript-sdk";
const authlete = new Authlete({
bearer: process.env["AUTHLETE_BEARER"] ?? "",
});
async function run() {
const result = await authlete.authorization.fail({
serviceId: "<id>",
authorizationFailRequest: {
ticket: "qA7wGybwArICpbUSutrf5Xc9-i1fHE0ySOHxR1eBoBQ",
reason: "NOT_AUTHENTICATED",
},
});
console.log(result);
}
run();require 'authlete_ruby_sdk'
Models = ::Authlete::Models
s = ::Authlete::Client.new(
bearer: '<YOUR_BEARER_TOKEN_HERE>'
)
res = s.authorization.fail_request(service_id: '<id>', authorization_fail_request: Models::Components::AuthorizationFailRequest.new(
ticket: 'qA7wGybwArICpbUSutrf5Xc9-i1fHE0ySOHxR1eBoBQ',
reason: Models::Components::AuthorizationFailRequestReason::NOT_AUTHENTICATED
))
unless res.authorization_fail_response.nil?
# handle response
endpackage main
import(
"context"
"os"
authlete "github.com/authlete/authlete-go-sdk"
"github.com/authlete/authlete-go-sdk/models/components"
"log"
)
func main() {
ctx := context.Background()
s := authlete.New(
authlete.WithSecurity(os.Getenv("AUTHLETE_BEARER")),
)
res, err := s.Authorization.Fail(ctx, "<id>", components.AuthorizationFailRequest{
Ticket: "qA7wGybwArICpbUSutrf5Xc9-i1fHE0ySOHxR1eBoBQ",
Reason: components.AuthorizationFailRequestReasonNotAuthenticated,
})
if err != nil {
log.Fatal(err)
}
if res.AuthorizationFailResponse != nil {
// handle response
}
}curl --request POST \
--url https://us.authlete.com/api/{serviceId}/auth/authorization/fail \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ticket": "<string>",
"description": "<string>"
}
'{
"resultCode": "A004201",
"resultMessage": "[A004201] The authorization request from the service does not contain 'parameters' parameter.",
"action": "BAD_REQUEST",
"responseContent": "{\\\"error_description\\\":\\\"[A004201] The authorization request from the service does not contain 'parameters' parameter.\\\",\\\"error\\\":\\\"invalid_request\\\",\\\"error_uri\\\":\\\"https://docs.authlete.com/#A004201\\\"}"
}{
"resultCode": "A001201",
"resultMessage": "[A001201] /auth/authorization, TLS must be used."
}{
"resultCode": "A001202",
"resultMessage": "[A001202] /auth/authorization, Authorization header is missing."
}{
"resultCode": "A001215",
"resultMessage": "[A001215] /auth/authorization, The client (ID = 26837717140341) is locked."
}{
"resultCode": "A001311",
"resultMessage": "[A001311] /auth/authorization, Too many requests, retry after 1 seconds. (Entity: 23769878923/87122303)"
}{
"resultCode": "A001101",
"resultMessage": "[A001101] /auth/authorization, Authlete Server error."
}Full description
Full description
/auth/authorization API describes the timing when this API should be called.
The response from /auth/authorization/fail API has some parameters.
Among them, it is action parameter that the authorization server implementation should check first because
it denotes the next action that the authorization server implementation should take.
According to the value of action, the authorization server implementation must take the steps described below.INTERNAL_SERVER_ERROR
When the value ofaction is INTERNAL_SERVER_ERROR, it means that the request from the authorization
server implementation was wrong or that an error occurred in Authlete.
In either case, from the viewpoint of the client application, it is an error on the server side.
Therefore, the service implementation should generate a response to the client application with
HTTP status of “500 Internal Server Error”. Authlete recommends application/json as the content type.
The value of responseContent is a JSON string which describes the error, so it can be used
as the entity body of the response.The following illustrates the response which the service implementation should generate and return to the client application.
HTTP/1.1 500 Internal Server Error
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{responseContent}
BAD_REQUEST
When the value ofaction is BAD_REQUEST, it means that the ticket is no longer valid (deleted
or expired) and that the reason of the invalidity was probably due to the end-user’s too-delayed
response to the authorization UI.
A response with HTTP status of “400 Bad Request” should be returned to the client application and
Authlete recommends application/json as the content type.
The value of responseContent is a JSON string which describes the error, so it can be used
as the entity body of the response.The following illustrates the response which the service implementation should generate and return to the client application.
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{responseContent}
LOCATION
When the value ofaction is LOCATION, it means that the response to the client application must
be “302 Found” with Location header.
The parameter responseContent contains a redirect URI with (1) an authorization code, an ID token
and/or an access token (on success) or (2) an error code (on failure), so it can be used as the
value of Location header.The following illustrates the response which the service implementation must generate and return to the client application.
HTTP/1.1 302 Found
Location: {responseContent}
Cache-Control: no-store
Pragma: no-cache
FORM
When the value ofaction is FORM, it means that the response to the client application must be 200 OK
with an HTML which triggers redirection by JavaScript.
This happens when the authorization request from the client application contained response_mode=form_post.
The value of responseContent is an HTML which can be used as the entity body of the response.The following illustrates the response which the service implementation must generate and return to the client application.
HTTP/1.1 200 OK
Content-Type: text/html;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
{responseContent}
Authorizations
Authenticate every request with a Service Access Token or Organization Token.
Set the token value in the Authorization: Bearer <token> header.
Service Access Token: Scoped to a single service. Use when automating service-level configuration or runtime flows.
Organization Token: Scoped to the organization; inherits permissions across services. Use for org-wide automation or when managing multiple services programmatically.
Both token types are issued by the Authlete console or provisioning APIs.
Path Parameters
A service ID.
Body
The ticket issued from Authlete /auth/authorization API.
The reason of the failure of the authorization request.
For more details, see [NO_INTERACTION] in the description of /auth/authorization API.
UNKNOWN, NOT_LOGGED_IN, MAX_AGE_NOT_SUPPORTED, EXCEEDS_MAX_AGE, DIFFERENT_SUBJECT, ACR_NOT_SATISFIED, DENIED, SERVER_ERROR, NOT_AUTHENTICATED, ACCOUNT_SELECTION_REQUIRED, CONSENT_REQUIRED, INTERACTION_REQUIRED, INVALID_TARGET The custom description about the authorization failure.
Response
The code which represents the result of the API call.
A short message which explains the result of the API call.
The next action that the authorization server implementation should take.
INTERNAL_SERVER_ERROR, BAD_REQUEST, LOCATION, FORM The content that the authorization server implementation is to return to the client application.
Its format varies depending on the value of action parameter.