IBM Cloud 계열 vLLM 연결에서 등록 모델 인증 방식이 Bearer와 CP4D만 지원하던 문제를 점검하고, IBM IAM 토큰 교환 경로를 추가했습니다. - RegisteredModel/AuthType에 ibm_iam 경로를 반영했습니다. - IbmIamTokenService를 추가해 API 키를 IAM access token으로 교환한 뒤 Bearer 헤더로 적용하도록 했습니다. - 모델 등록 다이얼로그, 설정 ViewModel, AX Agent 오버레이 모델 목록에도 IBM IAM 표시를 추가했습니다. - README.md와 docs/DEVELOPMENT.md에 2026-04-06 14:06 (KST) 기준 이력을 반영했습니다. 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
This commit is contained in:
@@ -12345,7 +12345,12 @@ public partial class ChatWindow : Window
|
||||
var decryptedModelName = Services.CryptoService.DecryptIfEnabled(model.EncryptedModelName, IsOverlayEncryptionEnabled);
|
||||
var displayName = string.IsNullOrWhiteSpace(model.Alias) ? decryptedModelName : model.Alias;
|
||||
var endpointText = string.IsNullOrWhiteSpace(model.Endpoint) ? "기본 서버 사용" : model.Endpoint;
|
||||
var authLabel = string.Equals(model.AuthType, "cp4d", StringComparison.OrdinalIgnoreCase) ? "CP4D" : "Bearer";
|
||||
var authLabel = (model.AuthType ?? "bearer").ToLowerInvariant() switch
|
||||
{
|
||||
"cp4d" => "CP4D",
|
||||
"ibm_iam" => "IBM IAM",
|
||||
_ => "Bearer",
|
||||
};
|
||||
var isActive = string.Equals(model.EncryptedModelName, _settings.Settings.Llm.Model, StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(decryptedModelName, _settings.Settings.Llm.Model, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ internal sealed class ModelRegistrationDialog : Window
|
||||
private readonly TextBox _apiKeyBox;
|
||||
private readonly CheckBox _allowInsecureTlsCheck;
|
||||
|
||||
// CP4D 인증 필드
|
||||
// IBM/CP4D 인증 필드
|
||||
private readonly ComboBox _authTypeBox;
|
||||
private readonly StackPanel _cp4dPanel;
|
||||
private readonly TextBox _cp4dUrlBox;
|
||||
@@ -271,10 +271,17 @@ internal sealed class ModelRegistrationDialog : Window
|
||||
BorderBrush = borderBrush, BorderThickness = new Thickness(1),
|
||||
};
|
||||
var bearerItem = new ComboBoxItem { Content = "Bearer 토큰 (API 키)", Tag = "bearer" };
|
||||
var ibmIamItem = new ComboBoxItem { Content = "IBM IAM (토큰 교환)", Tag = "ibm_iam" };
|
||||
var cp4dItem = new ComboBoxItem { Content = "CP4D (IBM Cloud Pak for Data)", Tag = "cp4d" };
|
||||
_authTypeBox.Items.Add(bearerItem);
|
||||
_authTypeBox.Items.Add(ibmIamItem);
|
||||
_authTypeBox.Items.Add(cp4dItem);
|
||||
_authTypeBox.SelectedItem = existingAuthType == "cp4d" ? cp4dItem : bearerItem;
|
||||
_authTypeBox.SelectedItem = existingAuthType switch
|
||||
{
|
||||
"cp4d" => cp4dItem,
|
||||
"ibm_iam" => ibmIamItem,
|
||||
_ => bearerItem,
|
||||
};
|
||||
stack.Children.Add(new Border { CornerRadius = new CornerRadius(8), ClipToBounds = true, Child = _authTypeBox });
|
||||
|
||||
// ── Bearer 인증: API 키 입력 ────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user