vCenter 및 ADFS 연동 후, MFA 적용시 403에러 발생
● ADFS 구축
- 단계 1. ADFS 서버를 구성한다.
- 단계 2. VMWare vCenter의 ID공급자를 구성된 ADFS로 설정하고 성공한다.
- 단계 3. https://learn.microsoft.com/ko-kr/windows-server/identity/ad-fs/operations/configure-ad-fs-and-azure-mfa 링크에 설명된 내용에 따라 ADFS에 MFA 구성을 실시한다.
- 단계 4. VMWare vCenter에 로그인 페이지에서 ID를 입력한다.
- 단계 5. ADFS 로그인 페이지로 리다이렉션 된다.
- 단계 6. ADFS 로그인 페이지에서 ID를 입력하고, MFA 인증코드를 호출하게 되면,
- 단계 7. 403 에러가 표시된다. (Exception calling SAS)
(클라이언트 표시) Activity ID: c4fa6ce5-693d-45a4-1000-0040000000d6 Relying party: vCenter-DEP-2FA - 웹 API Error details: Exception calling SAS. Node name: d436b22c-f2a2-4ea9-a70e-6d17cc5608ad Error time: Tue, 24 Sep 2024 12:10:21 GMT Cookie: enabled User agent string: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0 (서버 이벤트로그 표시) 페더레이션 수동 요청 중에 오류가 발생했습니다. 추가 데이터 프로토콜 이름: OAuthAuthorizationProtocol 신뢰 당사자: 0d81cad4-5275-45aa-9f68-2146d619488d 예외 세부 정보: System.Exception: Exception calling SAS. ---> System.Net.WebException: 원격 서버에서 (403) 사용할 수 없음 오류를 반환했습니다. 위치: System.Net.HttpWebRequest.GetResponse() 위치: Microsoft.IdentityServer.Aad.Sas.HttpClientHelper.PostXml[TRequest,TResponse](String url, String authenticationMethod, TRequest request, Action`2 httpRequestModifier) 위치: Microsoft.IdentityServer.Aad.Sas.RealSasProvider.GetAvailableAuthenticationMethods(GetAvailableAuthenticationMethodsRequest request) 위치: Microsoft.IdentityServer.Adapter.AzureMfa.PrimaryAuthenticationAdapter.ProcessUsernameOathCodePin(IAuthenticationContext authContext, IProofData proofData, Claim[]& outgoingClaims) --- 내부 예외 스택 추적의 끝 --- 위치: Microsoft.IdentityServer.Adapter.AzureMfa.PrimaryAuthenticationAdapter.ProcessUsernameOathCodePin(IAuthenticationContext authContext, IProofData proofData, Claim[]& outgoingClaims) 위치: Microsoft.IdentityServer.Adapter.AzureMfa.PrimaryAuthenticationAdapter.TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, Claim[]& outgoingClaims) 위치: Microsoft.IdentityServer.Web.Authentication.External.ExternalAuthenticationHandlerBase.TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, Claim[]& adapterClaims) 위치: Microsoft.IdentityServer.Web.Authentication.Azure.AzurePrimaryAuthenticationHandler.Process(ProtocolContext context) 위치: Microsoft.IdentityServer.Web.Authentication.AuthenticationOptionsHandler.Process(ProtocolContext context) 위치: Microsoft.IdentityServer.Web.PassiveProtocolListener.OnGetContext(WrappedHttpListenerContext context) System.Net.WebException: 원격 서버에서 (403) 사용할 수 없음 오류를 반환했습니다. 위치: System.Net.HttpWebRequest.GetResponse() 위치: Microsoft.IdentityServer.Aad.Sas.HttpClientHelper.PostXml[TRequest,TResponse](String url, String authenticationMethod, TRequest request, Action`2 httpRequestModifier) 위치: Microsoft.IdentityServer.Aad.Sas.RealSasProvider.GetAvailableAuthenticationMethods(GetAvailableAuthenticationMethodsRequest request) 위치: Microsoft.IdentityServer.Adapter.AzureMfa.PrimaryAuthenticationAdapter.ProcessUsernameOathCodePin(IAuthenticationContext authContext, IProofData proofData, Claim[]& outgoingClaims) |
원인 : Microsoft 제공 가이드에 보면, 레지스트리에 SasUrl, StsUrl, ResourceUri 를 특정한 값으로 입력하라고 언급하였으나, 해당 값으로 적용시 동작하지 않음.
MS가 하란대로 하면 절대 안된다!!!
해결방법 : 레지스트리 값 변경
컴퓨터\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS
SasUrl : https://adnotifications.windowsazure.com/StrongAuthenticationService.svc/Connector
StsUrl : https://login.microsoftonline.com
ResourceUri : https://adnotifications.windowsazure.com/StrongAuthenticationService.svc/Connector
이렇게 해서 해결 완료!
결론..
"MS... 이자식들이.. SISISISISISISISI;;;;BALBALBALBALBALBAL;;;;;;;;;;;"