Skip to content
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
27 changes: 24 additions & 3 deletions specs/security.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,26 @@ paths:
description: Not authenticated
'403':
description: Access token does not have the required scope
/identity:
get:
summary: Gets identity information via OpenID Connect
security:
- OpenID: []
responses:
'200':
description: OK
'401':
description: Not authenticated
/certificate_status:
get:
summary: Checks mutual TLS certificate status
security:
- MutualTlsAuth: []
responses:
'200':
description: OK
'401':
description: Not authenticated
/ping:
get:
summary: Checks if the server is running
Expand All @@ -55,6 +75,8 @@ components:
OpenID:
type: openIdConnect
openIdConnectUrl: https://example.com/.well-known/openid-configuration
MutualTlsAuth:
type: mutualTLS
OAuth2:
type: oauth2
flows:
Expand Down Expand Up @@ -83,6 +105,5 @@ security:
- read
- write
- admin
- OpenId:
- scopeA
- scopeB
- OpenID: []
- MutualTlsAuth: []
2 changes: 2 additions & 0 deletions src/libs/AutoSDK.CSharp/Operations/AuthorizationHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ internal static string GetIdentity(Authorization authorization)
SecuritySchemeType.ApiKey => $"{authorization.Type:G}|{authorization.In:G}|{authorization.Name}",
SecuritySchemeType.OAuth2 => $"{authorization.Type:G}|{authorization.SchemeId}",
SecuritySchemeType.OpenIdConnect => $"{authorization.Type:G}|{authorization.SchemeId}",
SecuritySchemeType.MutualTLS => $"{authorization.Type:G}|{authorization.SchemeId}",
SecuritySchemeType.Http => $"{authorization.Type:G}|{authorization.Scheme.ToUpperInvariant()}",
_ => $"{authorization.Type:G}|{authorization.In:G}|{authorization.Name}|{authorization.SchemeId}",
};
Expand Down Expand Up @@ -183,6 +184,7 @@ private static string GetSecurityRequirementSortKey(OpenApiSecuritySchemeReferen
SecuritySchemeType.ApiKey => $"{scheme.Type:G}|{scheme.In:G}|{scheme.Name}",
SecuritySchemeType.OAuth2 => $"{scheme.Type:G}|{scheme.Reference?.Id ?? scheme.Name}",
SecuritySchemeType.OpenIdConnect => $"{scheme.Type:G}|{scheme.Reference?.Id ?? scheme.Name}",
SecuritySchemeType.MutualTLS => $"{scheme.Type:G}|{scheme.Reference?.Id ?? scheme.Name}",
SecuritySchemeType.Http => $"{scheme.Type:G}|{scheme.Scheme?.ToUpperInvariant()}",
_ => $"{scheme.Type:G}|{scheme.Reference?.Id ?? scheme.Name ?? scheme.Scheme}",
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public static Authorization FromOpenApiSecurityScheme(
(SecuritySchemeType.ApiKey, _, ParameterLocation.Cookie) => "ApiKeyInCookie",
(SecuritySchemeType.OAuth2, _, _) => "OAuth2",
(SecuritySchemeType.OpenIdConnect, _, _) => "OpenIdConnect",
(SecuritySchemeType.MutualTLS, _, _) => "MutualTls",
_ => scheme.Name?.ToPropertyName() ?? scheme.Scheme?.ToPropertyName() ?? "Authorization",
};
string[] parameters = (scheme.Type, scheme.Scheme?.ToUpperInvariant(), scheme.In) switch
Expand All @@ -35,6 +36,7 @@ public static Authorization FromOpenApiSecurityScheme(
(SecuritySchemeType.ApiKey, _, ParameterLocation.Header) => ["apiKey"],
(SecuritySchemeType.ApiKey, _, ParameterLocation.Query) => ["apiKey"],
(SecuritySchemeType.ApiKey, _, ParameterLocation.Cookie) => ["apiKey"],
(SecuritySchemeType.OpenIdConnect, _, _) => ["accessToken"],
_ => [],
};

Expand All @@ -50,6 +52,7 @@ public static Authorization FromOpenApiSecurityScheme(
(SecuritySchemeType.Http, _) => ParameterLocation.Header,
(SecuritySchemeType.OAuth2, _) => ParameterLocation.Header,
(SecuritySchemeType.OpenIdConnect, _) => ParameterLocation.Header,
(SecuritySchemeType.MutualTLS, _) => null,
_ => scheme.In,
},
parameters: parameters.ToImmutableArray().AsEquatableArray(),
Expand Down
14 changes: 10 additions & 4 deletions src/libs/AutoSDK.CSharp/Pipeline/Data.cs
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,7 @@ bool CanExpandReference(SchemaContext resolvedReference)
.Values
.ToArray();
var hasOAuth2Support = authorizations.Any(static x => x.Type is SecuritySchemeType.OAuth2);
var hasMutualTlsSupport = authorizations.Any(static x => x.Type is SecuritySchemeType.MutualTLS);

var convertersBuilder = ImmutableArray.CreateBuilder<string>();
// Enum converters
Expand Down Expand Up @@ -631,7 +632,8 @@ .. resolvedIncludedTags.Select(tag => (PropertyData.Default with
Settings: csharpSettings,
GlobalSettings: csharpGlobalSettings,
Converters: converters,
HasOAuth2Support: hasOAuth2Support)] : [];
HasOAuth2Support: hasOAuth2Support,
HasMutualTlsSupport: hasMutualTlsSupport)] : [];
if (settings.GroupByTags && (settings.GenerateSdk || settings.GenerateConstructors))
{
clients = clients.Concat(
Expand All @@ -648,7 +650,8 @@ .. resolvedIncludedTags.Select(tag => (PropertyData.Default with
Settings: csharpSettings,
GlobalSettings: csharpGlobalSettings,
Converters: [],
HasOAuth2Support: hasOAuth2Support)))
HasOAuth2Support: hasOAuth2Support,
HasMutualTlsSupport: hasMutualTlsSupport)))
.ToArray();
}

Expand Down Expand Up @@ -897,6 +900,7 @@ internal static Models.Data Enrich(
.Values
.ToArray();
var hasOAuth2Support = authorizations.Any(static x => x.Type is SecuritySchemeType.OAuth2);
var hasMutualTlsSupport = authorizations.Any(static x => x.Type is SecuritySchemeType.MutualTLS);

var convertersBuilder = ImmutableArray.CreateBuilder<string>();
foreach (var value in enums)
Expand Down Expand Up @@ -997,7 +1001,8 @@ .. resolvedIncludedTags.Select(tag => (PropertyData.Default with
Settings: settings,
GlobalSettings: globalSettings,
Converters: converters,
HasOAuth2Support: hasOAuth2Support)]
HasOAuth2Support: hasOAuth2Support,
HasMutualTlsSupport: hasMutualTlsSupport)]
: [];

if (settings.GroupByTags && (settings.GenerateSdk || settings.GenerateConstructors))
Expand All @@ -1015,7 +1020,8 @@ .. resolvedIncludedTags.Select(tag => (PropertyData.Default with
Settings: settings,
GlobalSettings: globalSettings,
Converters: [],
HasOAuth2Support: hasOAuth2Support)))
HasOAuth2Support: hasOAuth2Support,
HasMutualTlsSupport: hasMutualTlsSupport)))
.ToArray();
}

Expand Down
Loading