Codeunit 1289 OAuth Impl. in 26
- App
- System Application
- Namespace
- System.Security.Authentication
Versions171819202122232425262728latest
Source in 26
src/System Application/App/OAuth/src/OAuthImpl.Codeunit.al124 lines, Copyright (c) Microsoft Corporation. MIT
// ------------------------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// ------------------------------------------------------------------------------------------------
namespace System.Security.Authentication;
using System;
codeunit 1289 "OAuth Impl."
{
Access = Internal;
SingleInstance = false;
InherentEntitlements = X;
InherentPermissions = X;
var
TelemetrySecurityTok: Label 'AL Security', Locked = true;
WeakHashFunctionTxt: Label 'Use of weak hash function', Locked = true;
#if not CLEAN24
[TryFunction]
[NonDebuggable]
[Obsolete('Use GetRequestToken with SecretText data type for AccessTokenKey and AccessTokenSecret.', '24.0')]
procedure GetRequestToken(ConsumerKey: Text; ConsumerSecret: Text; RequestTokenUrl: Text; CallbackUrl: Text; var AccessTokenKey: Text; var AccessTokenSecret: Text)
var
SecretAccessTokenKey: SecretText;
SecretAccessTokenSecret: SecretText;
begin
GetRequestToken(ConsumerKey, ConsumerSecret, RequestTokenUrl, CallbackUrl, SecretAccessTokenKey, SecretAccessTokenSecret);
AccessTokenKey := SecretAccessTokenKey.Unwrap();
AccessTokenSecret := SecretAccessTokenSecret.Unwrap();
end;
[TryFunction]
[NonDebuggable]
[Obsolete('Use GetAccessToken with SecretText data type for AccessTokenKey and AccessTokenSecret.', '24.0')]
procedure GetAccessToken(ConsumerKey: Text; ConsumerSecret: Text; RequestTokenUrl: Text; Verifier: Text; RequestTokenKey: Text; RequestTokenSecret: Text; var AccessTokenKey: Text; var AccessTokenSecret: Text)
var
SecretAccessTokenKey: SecretText;
SecretAccessTokenSecret: SecretText;
begin
GetAccessToken(ConsumerKey, ConsumerSecret, RequestTokenUrl, Verifier, RequestTokenKey, RequestTokenSecret, SecretAccessTokenKey, SecretAccessTokenSecret);
AccessTokenKey := SecretAccessTokenKey.Unwrap();
AccessTokenSecret := SecretAccessTokenSecret.Unwrap();
end;
[TryFunction]
[NonDebuggable]
[Obsolete('Use GetAuthorizationHeader with SecretText data type for AuthorizationHeader.', '24.0')]
procedure GetAuthorizationHeader(ConsumerKey: Text; ConsumerSecret: Text; RequestTokenKey: Text; RequestTokenSecret: Text; RequestUrl: Text; RequestMethod: Enum "Http Request Type"; var AuthorizationHeader: Text)
var
SecretAuthorizationHeader: SecretText;
begin
GetAuthorizationHeader(ConsumerKey, ConsumerSecret, RequestTokenKey, RequestTokenSecret, RequestUrl, RequestMethod, SecretAuthorizationHeader);
AuthorizationHeader := SecretAuthorizationHeader.Unwrap();
end;
#endif
[TryFunction]
procedure GetRequestToken(ConsumerKey: SecretText; ConsumerSecret: SecretText; RequestTokenUrl: Text; CallbackUrl: Text; var AccessTokenKey: SecretText; var AccessTokenSecret: SecretText)
var
OAuthAuthorization: DotNet OAuthAuthorization;
Consumer: DotNet Consumer;
Token: DotNet Token;
RequestToken: DotNet Token;
EmptySecretText: SecretText;
begin
Token := Token.Token(EmptySecretText, EmptySecretText);
Consumer := Consumer.Consumer(ConsumerKey, ConsumerSecret);
OAuthAuthorization := OAuthAuthorization.OAuthAuthorization(Consumer, Token);
RequestToken := OAuthAuthorization.GetRequestToken(RequestTokenUrl, CallbackUrl);
AccessTokenKey := RequestToken.TokenKey();
AccessTokenSecret := RequestToken.TokenSecret();
end;
[TryFunction]
procedure GetAccessToken(ConsumerKey: SecretText; ConsumerSecret: SecretText; RequestTokenUrl: Text; Verifier: Text; RequestTokenKey: SecretText; RequestTokenSecret: SecretText; var AccessTokenKey: SecretText; var AccessTokenSecret: SecretText)
var
OAuthAuthorization: DotNet OAuthAuthorization;
Consumer: DotNet Consumer;
RequestToken: DotNet Token;
AccessToken: DotNet Token;
begin
RequestToken := RequestToken.Token(RequestTokenKey, RequestTokenSecret);
Consumer := Consumer.Consumer(ConsumerKey, ConsumerSecret);
OAuthAuthorization := OAuthAuthorization.OAuthAuthorization(Consumer, RequestToken);
AccessToken := OAuthAuthorization.GetAccessToken(RequestTokenUrl, Verifier);
AccessTokenKey := AccessToken.TokenKey();
AccessTokenSecret := AccessToken.TokenSecret();
end;
[TryFunction]
procedure GetAuthorizationHeader(ConsumerKey: SecretText; ConsumerSecret: SecretText; RequestTokenKey: SecretText; RequestTokenSecret: SecretText; RequestUrl: Text; RequestMethod: Enum "Http Request Type"; var AuthorizationHeader: SecretText)
var
OAuthAuthorization: DotNet OAuthAuthorization;
Consumer: DotNet Consumer;
RequestToken: DotNet Token;
begin
RequestToken := RequestToken.Token(RequestTokenKey, RequestTokenSecret);
Consumer := Consumer.Consumer(ConsumerKey, ConsumerSecret);
OAuthAuthorization := OAuthAuthorization.OAuthAuthorization(Consumer, RequestToken);
case RequestMethod of
RequestMethod::GET:
AuthorizationHeader := OAuthAuthorization.GetAuthorizationHeader(RequestUrl, 'GET');
RequestMethod::POST:
AuthorizationHeader := OAuthAuthorization.GetAuthorizationHeader(RequestUrl, 'POST');
RequestMethod::PATCH:
AuthorizationHeader := OAuthAuthorization.GetAuthorizationHeader(RequestUrl, 'PATCH');
RequestMethod::PUT:
AuthorizationHeader := OAuthAuthorization.GetAuthorizationHeader(RequestUrl, 'PUT');
RequestMethod::DELETE:
AuthorizationHeader := OAuthAuthorization.GetAuthorizationHeader(RequestUrl, 'DELETE');
end;
Session.LogMessage('0000ED2', WeakHashFunctionTxt, Verbosity::Warning, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', TelemetrySecurityTok);
end;
}
Procedures, 6
| Name | Parameters | Returns | Access | Obsolete | |||
|---|---|---|---|---|---|---|---|
| GetRequestToken | (Text, Text, Text, Text, var Text, var Text) | Boolean | public | Pending 24.0 | |||
| Use GetRequestToken with SecretText data type for AccessTokenKey and AccessTokenSecret. | |||||||
| GetAccessToken | (Text, Text, Text, Text, Text, Text, var Text, var Text) | Boolean | public | Pending 24.0 | |||
| Use GetAccessToken with SecretText data type for AccessTokenKey and AccessTokenSecret. | |||||||
| GetAuthorizationHeader | (Text, Text, Text, Text, Text, Enum Http Request Type, var Text) | Boolean | public | Pending 24.0 | |||
| Use GetAuthorizationHeader with SecretText data type for AuthorizationHeader. | |||||||
| GetRequestToken | (SecretText, SecretText, Text, Text, var SecretText, var SecretText) | Boolean | public | - | |||
| GetAccessToken | (SecretText, SecretText, Text, Text, SecretText, SecretText, var SecretText, var SecretText) | Boolean | public | - | |||
| GetAuthorizationHeader | (SecretText, SecretText, SecretText, SecretText, Text, Enum Http Request Type, var SecretText) | Boolean | public | - | |||