---
product: Chilkat
product_version: 11.7.0
language: delphidll
language_label: Delphi DLL
class: AuthAzureSAS
license: bundle
deprecated: false
reference_html: https://www.chilkatsoft.com/refdoc/dd_CkAuthAzureSASRef.html
---
# Chilkat AuthAzureSAS — Delphi DLL — v11.7.0

> Chilkat 11.7.0 · language=delphidll · class=AuthAzureSAS
> Other versions: replace `11.7.0` in this URL. Other languages: `https://www.chilkatsoft.com/ai-docs/v/11.7.0/<lang>/classes/AuthAzureSAS.md`.
> Language-wide rules (install, unlock, error model, strings/bytes): `https://www.chilkatsoft.com/ai-docs/v/11.7.0/delphidll/guide.md`.

## Purpose

**Create Azure Shared Access Signature tokens for signed Azure Storage requests.**

`Chilkat.AuthAzureSAS` creates Azure Shared Access Signature authentication tokens. It defines the SAS string-to-sign, supplies the Azure Storage account access key used to compute the signature, and controls which parameters are included in the generated SAS token query string. The resulting token can be used with `Chilkat.Rest`, `Chilkat.Http`, or other request-building code that needs time-limited, permission-scoped access to Azure Storage resources.

**SAS token generation**

Generate a signed query-string token that authorizes limited access to an Azure Storage resource.

**String-to-sign control**

Provide the exact Azure SAS string-to-sign required for the storage service and resource being accessed.

**Account key signing**

Use the Azure Storage account access key to compute the signature placed in the generated SAS token.

**Token parameters**

Add signed SAS parameters such as permissions, expiry, resource type, API version, protocol, or IP restrictions.

**Non-token parameters**

Add query parameters that should accompany the request but should not be included as part of the SAS token itself.

**REST integration**

Use the generated SAS query string with Azure Storage requests built using `Chilkat.Rest` or other Chilkat HTTP workflows.

**Common pattern:** Create an `AuthAzureSAS` object, set the Azure Storage `AccessKey`, provide the required `StringToSign`, add SAS token parameters with `SetTokenParam`, add any extra query parameters with `SetNonTokenParam`, then call `GenerateToken`. Use `AuthAzureSAS` when you need a SAS query token; use `Chilkat.AuthAzureStorage` when you need Shared Key authorization headers instead.

For an extended overview, see [AuthAzureSAS Class Overview](https://www.chilkatsoft.com/authazuresas_class_overview.asp).

## Object creation, unlocking and error handling

**Create/Dispose**

```pascal
var
myObject: HCkAuthAzureSAS;

begin
myObject := CkAuthAzureSAS_Create();

// ...

CkAuthAzureSAS_Dispose(myObject);
end;
```

`function CkAuthAzureSAS_Create: HCkAuthAzureSAS; stdcall;`

Creates an instance of the HCkAuthAzureSAS object and returns a handle (i.e. a Pointer). The handle is passed in the 1st argument for the functions listed on this page.

`procedure CkAuthAzureSAS_Dispose(handle: HCkAuthAzureSAS); stdcall;`

Objects created by calling CkAuthAzureSAS_Create must be freed by calling this method. A memory leak occurs if a handle is not disposed by calling this function.

Call `Global.UnlockBundle` once at the start of the program, before using this or any other Chilkat class. Any string unlocks a fully functional 30-day trial; a purchased unlock code is used in production. See `guide.md` for the exact code in Delphi DLL.

## Members common to every Chilkat class

Documented once per language in `common-members.md`; listed here so this page is self-contained.

| Property | Signature | Access | Meaning |
|---|---|---|---|
| `DebugLogFilePath` | `procedure CkAuthAzureSAS_getDebugLogFilePath(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall; procedure CkAuthAzureSAS_putDebugLogFilePath(objHandle: HCkAuthAzureSAS; newPropVal: PWideChar); stdcall; function CkAuthAzureSAS__debugLogFilePath(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` | read/write | If set to a file path, this property logs the LastErrorText of each Chilkat method or property call to the specified file. |
| `LastErrorHtml` | `procedure CkAuthAzureSAS_getLastErrorHtml(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall; function CkAuthAzureSAS__lastErrorHtml(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` | read-only | Provides HTML-formatted information about the last called method or property. |
| `LastErrorText` | `procedure CkAuthAzureSAS_getLastErrorText(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall; function CkAuthAzureSAS__lastErrorText(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` | read-only | Provides plain text information about the last called method or property. |
| `LastErrorXml` | `procedure CkAuthAzureSAS_getLastErrorXml(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall; function CkAuthAzureSAS__lastErrorXml(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` | read-only | Provides XML-formatted information about the last called method or property. |
| `LastMethodSuccess` | `function CkAuthAzureSAS_getLastMethodSuccess(objHandle: HCkAuthAzureSAS): wordbool; stdcall; procedure CkAuthAzureSAS_putLastMethodSuccess(objHandle: HCkAuthAzureSAS; newPropVal: wordbool); stdcall;` | read/write | Indicates the success or failure of the most recent method call: `True` means success, `False` means failure. |
| `VerboseLogging` | `function CkAuthAzureSAS_getVerboseLogging(objHandle: HCkAuthAzureSAS): wordbool; stdcall; procedure CkAuthAzureSAS_putVerboseLogging(objHandle: HCkAuthAzureSAS; newPropVal: wordbool); stdcall;` | read/write | If set to `True`, then the contents of LastErrorText (or LastErrorXml, or LastErrorHtml) may contain more verbose information. |
| `Version` | `procedure CkAuthAzureSAS_getVersion(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall; function CkAuthAzureSAS__version(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` | read-only | Version of the component/library, such as "10.1.0" |

## Member index

| Member | Kind | Signature |
|---|---|---|
| `AccessKey` | property, read/write | `procedure CkAuthAzureSAS_getAccessKey(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall; procedure CkAuthAzureSAS_putAccessKey(objHandle: HCkAuthAzureSAS; newPropVal: PWideChar); stdcall; function CkAuthAzureSAS__accessKey(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` |
| `StringToSign` | property, read/write | `procedure CkAuthAzureSAS_getStringToSign(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall; procedure CkAuthAzureSAS_putStringToSign(objHandle: HCkAuthAzureSAS; newPropVal: PWideChar); stdcall; function CkAuthAzureSAS__stringToSign(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` |
| `Clear` | method | `procedure CkAuthAzureSAS_Clear(objHandle: HCkAuthAzureSAS) stdcall;` |
| `GenerateToken` | method | `function CkAuthAzureSAS_GenerateToken(objHandle: HCkAuthAzureSAS;     outStr: HCkString): wordbool; stdcall; function CkAuthAzureSAS__generateToken(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;` |
| `SetNonTokenParam` | method | `function CkAuthAzureSAS_SetNonTokenParam(objHandle: HCkAuthAzureSAS;     name: PWideChar;     value: PWideChar): wordbool; stdcall;` |
| `SetTokenParam` | method | `function CkAuthAzureSAS_SetTokenParam(objHandle: HCkAuthAzureSAS;     name: PWideChar;     authParamName: PWideChar;     value: PWideChar): wordbool; stdcall;` |

## Properties

### AuthAzureSAS.AccessKey

`Chilkat 11.7.0 · delphidll · AuthAzureSAS · AccessKey · property · read/write · since 9.5.0.65`

```pascal
procedure CkAuthAzureSAS_getAccessKey(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall;
procedure CkAuthAzureSAS_putAccessKey(objHandle: HCkAuthAzureSAS; newPropVal: PWideChar); stdcall;
function CkAuthAzureSAS__accessKey(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;
```

This is the signing key (access key) that must be kept private. It is a base64 string such as `abdTvCZFFoWUyre6erlNN+IOb9qhXgDsyhrxmZvpmxqFDwpl9oD0X9Fy0hIQa6L5UohznRLmkCtUYySO4Y2eaw==`

### AuthAzureSAS.StringToSign

`Chilkat 11.7.0 · delphidll · AuthAzureSAS · StringToSign · property · read/write · since 9.5.0.65`

```pascal
procedure CkAuthAzureSAS_getStringToSign(objHandle: HCkAuthAzureSAS; outPropVal: HCkString); stdcall;
procedure CkAuthAzureSAS_putStringToSign(objHandle: HCkAuthAzureSAS; newPropVal: PWideChar); stdcall;
function CkAuthAzureSAS__stringToSign(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;
```

**Full documentation for this property (same in every language):** [Explaining Azure SAS Tokens](https://www.chilkatsoft.com/ai-docs/v/11.7.0/articles/azure_sas_tokens_for_authentication.md)

Defines the format of the string to sign.

The format is specified as a comma-separated list of names. For example:

```
signedpermissions,signedstart,signedexpiry,canonicalizedresource,signedidentifier,signedIP,signedProtocol,signedversion,rscc,rscd,rsce,rscl,rsct
```

This will result in an actual string-to-sign that is composed of the values for each name separated by newline (LF) chars. For example:

```
signedpermissions + \n +  
signedstart + \n +  
signedexpiry + \n +  
canonicalizedresource + \n +  
signedidentifier + \n +  
signedIP + \n +  
signedProtocol + \n +  
signedversion + \n +  
rscc + \n +  
rscd + \n +  
rsce + \n +  
rscl + \n +  
rsct
```

## Methods

### AuthAzureSAS.Clear

`Chilkat 11.7.0 · delphidll · AuthAzureSAS · Clear · method · since 9.5.0.65`

```pascal
procedure CkAuthAzureSAS_Clear(objHandle: HCkAuthAzureSAS) stdcall;
```

Clears all params set by the methods SetNonTokenParam and SetTokenParam.

### AuthAzureSAS.GenerateToken

`Chilkat 11.7.0 · delphidll · AuthAzureSAS · GenerateToken · method · since 9.5.0.65`

```pascal
function CkAuthAzureSAS_GenerateToken(objHandle: HCkAuthAzureSAS;
    outStr: HCkString): wordbool; stdcall;
function CkAuthAzureSAS__generateToken(objHandle: HCkAuthAzureSAS): PWideChar; stdcall;
```

**Full documentation for this method (same in every language):** [Explaining Azure SAS Tokens](https://www.chilkatsoft.com/ai-docs/v/11.7.0/articles/azure_sas_tokens_for_authentication.md)

Generates and returns the SAS token based on the defined `StringToSign` and params.

Returns True for success, False for failure.

See the notes about [PWideChar memory ownership and validity](https://www.chilkatsoft.com/delphi_pwidechar.asp).

### AuthAzureSAS.SetNonTokenParam

`Chilkat 11.7.0 · delphidll · AuthAzureSAS · SetNonTokenParam · method · since 9.5.0.65`

```pascal
function CkAuthAzureSAS_SetNonTokenParam(objHandle: HCkAuthAzureSAS;
    name: PWideChar;
    value: PWideChar): wordbool; stdcall;
```

Adds a non-token parameter name/value. This is a value that is included in the string to sign, but is NOT included in the token query params.

Returns True for success, False for failure.

### AuthAzureSAS.SetTokenParam

`Chilkat 11.7.0 · delphidll · AuthAzureSAS · SetTokenParam · method · since 9.5.0.65`

```pascal
function CkAuthAzureSAS_SetTokenParam(objHandle: HCkAuthAzureSAS;
    name: PWideChar;
    authParamName: PWideChar;
    value: PWideChar): wordbool; stdcall;
```

Adds a token parameter name/value. This is a value that is included in the string to sign, and is also included in the token query params.

Returns True for success, False for failure.

