ASP.NET Core 분리 애플리케이션에서 SAML Single Sign-On(SSO) 구성
회사 개요
이 가이드에서는 SAML 호환 ID 공급자(IdP)를 사용하여 ASP.NET Core 분리 아키텍처 애플리케이션에서 SAML Single Sign-On(SSO)을 설정하는 자세한 단계를 제공합니다. 백엔드(ASP.NET Core)는 SSO 인증을 처리하고, JWT 토큰을 생성하고, 이를 모든 프런트엔드(React, Angular, Vue 등)에 안전하게 노출합니다.
플랫폼 지원: ASP.NET Core SAML 미들웨어는 ASP.NET Core 2.0 이상을 지원합니다. Windows, Linux, macOS를 포함한 모든 ASP.NET Core 플랫폼을 지원합니다.
전제조건 : 다운로드 및 설치
- 버전 .NET 5 이상
- 버전 .NET Core 2.1 및 .NET Core 3.1
API 호출 시 CORS 문제가 발생하는 경우 아래 서비스와 정책을 추가하세요.
builder.Services.AddCors(options =>
{
options.AddPolicy("<policy-name>",policy =>
{
policy.WithOrigins("<your-origin>",policy)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
});
});
//Add this in the middleware section
app.UseCors("<policy-name>");
구성 단계
ID 공급자를 사용하여 ASP.NET Core SAML SSO를 위한 단계별 가이드입니다.
1. .NET SAML 플러그인 대시보드에 액세스합니다.
- 통합 후 브라우저를 열고 아래 URL을 사용하여 커넥터 대시보드를 탐색하세요.
http(s)<your-dotnet-application-base-url>?ssoaction=config
- 등록 페이지나 로그인 페이지가 팝업되면 애플리케이션에 miniOrange SAML SSO 미들웨어가 성공적으로 추가된 것입니다.
- 다음을 클릭하여 귀하의 계정으로 등록하거나 로그인하십시오. 회원가입 미들웨어를 구성하는 버튼입니다.
2. ID 공급자 구성
- 아래의 플러그인 설정 탭에서 표시된 목록에서 ID 공급자를 선택하세요.
아래에는 SAML SP 메타데이터를 가져와 ID 공급자 측에서 구성할 수 있는 두 가지 방법이 자세히 나와 있습니다.
A] SAML 메타데이터 URL 또는 메타데이터 파일 사용
- . 플러그인 설정 메뉴, 찾다 서비스 제공업체 설정. 그 아래에는 메타데이터 URL과 SAML 메타데이터를 다운로드하는 옵션이 있습니다.
- 메타데이터 URL을 복사하거나 메타데이터 파일을 다운로드하여 ID 공급자 측에서 동일하게 구성하세요.
- 아래 스크린샷을 참고하시면 됩니다.
B] 메타데이터 수동 업로드
- 에서 서비스 제공업체 설정 섹션에서는 서비스 제공자 메타데이터를 수동으로 복사할 수 있습니다. SP 엔티티 ID, ACS URL, 싱글 로그아웃 URL 구성을 위해 ID 공급자와 공유하세요.
- 아래 스크린샷을 참고하시면 됩니다.
3. ASP.NET Core SAML 미들웨어를 서비스 공급자로 구성
아래에는 미들웨어에서 SAML ID 공급자 메타데이터를 구성하는 두 가지 방법이 자세히 나와 있습니다.
A] IDP 메타데이터 업로드 버튼을 사용하여 메타데이터를 업로드합니다.
- 귀하의 ID 공급자가 메타데이터 URL 또는 메타데이터 파일(.xml 형식만 해당)을 제공한 경우 미들웨어에서 다음을 사용하여 간단히 ID 공급자 메타데이터를 구성할 수 있습니다. IDP 메타데이터 업로드 옵션을 선택합니다.
- 메타데이터 URL을 복사하거나 메타데이터 파일을 다운로드하여 ID 공급자 측에서 동일하게 구성하세요.
- 아래 스크린샷을 참고하시면 됩니다.
- 사용 가능한 메타데이터 형식에 따라 옵션 중 하나를 선택할 수 있습니다.
B] ID 공급자 메타데이터를 수동으로 구성합니다.
- 구성한 후 아이덴티티 공급자, 그것은 당신에게 제공될 것입니다 IDP 엔터티 ID, IDP 싱글 사인온 URL SAML X509 인증서 각각 필드.
- 찜하기 IDP 세부 정보를 저장합니다.
4. SAML SSO 테스트
- 온 클릭 테스트 구성 SAML 구성이 올바른지 테스트하려면 버튼을 클릭하세요.
- 아래 스크린샷은 성공적인 결과를 보여줍니다. 클릭 SSO 통합 SSO 통합을 계속 진행합니다.
- 미들웨어 측에서 오류가 발생하는 경우 아래와 유사한 창이 표시됩니다.
- 오류를 해결하려면 다음 단계를 따르세요.
- $XNUMX Million 미만 문제 해결 탭에서 토글을 활성화하여 플러그인 로그를 수신하세요.
- 활성화되면 플러그인 로그를 검색하여 다음을 수행할 수 있습니다. 플러그인 설정 탭을 클릭하고 테스트 구성.
- 를 다운로드 로그 파일 인사말 문제 해결 탭을 눌러서 무엇이 잘못되었는지 확인하세요.
- 당신은 공유할 수 있습니다 로그 파일 우리와 함께 aspnetsupport@xecurify.com 문제를 해결하기 위해 저희 팀에서 연락을 드릴 것입니다.
5. 속성 매핑
- 구성을 테스트한 후 애플리케이션 속성을 ID 공급자(IdP) 속성과 매핑합니다.
- 참고 : 모든 매핑된 속성은 세션에 저장되므로 애플리케이션에서 액세스할 수 있습니다.
6. 통합 코드
- 이 단계를 통해 애플리케이션에서 사용자 클레임 형식으로 SSO 사용자 정보를 검색할 수 있습니다.
- 참고 : 이 평가판 미들웨어는 클레임의 사용자 정보만 지원하며, 세션 및 헤더의 사용자 정보 검색은 프리미엄 플러그인에서 가능합니다.
-
로그인 후 JWT 토큰을 반환하기 위해 .NET 측에서 GET Endpoint를 만듭니다.
참고: JWT를 생성하는 방법이 있는 경우 .NET 쿠키에서 클레임을 선택하기만 하면 됩니다.
참고할 수 있는 코드는 다음과 같습니다.
[HttpGet("gettoken")]
public string GetToken()
{
if(User.Identity!=null && User.Identity.IsAuthenticated)
{
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes
("Your-JWT-secret-key"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var identity = (ClaimsIdentity)User.Identity;
var claims = identity.Claims;
var token = new JwtSecurityToken(
issuer:"<issuer-name>",
audience:"<audience>",
claims:claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
return null;
}
7. 로그인 버튼 추가
- 마우스를 올리면 작업 선택 그리고 클릭 SSO 링크를 복사합니다.
- SSO를 수행하려는 애플리케이션에서 다음 URL을 링크로 사용하세요.
https://<application-url>?ssoaction=login&appid=<app-id>
- 로그인 후 다시 귀하의 페이지로 이동됩니다. 프런트엔드 애플리케이션, 그러면 당신은 다음을 해야 합니다. API 호출 ~을 얻기 위해 토큰 및 사용자 정보.
- 아래는 API 호출을 수행하는 데 사용할 수 있는 샘플 코드입니다. 토큰 엔드포인트 프런트엔드 측에서 토큰을 가져옵니다.
fetch("https://<backend-api-baseurl>/api/gettoken", {
method: "GET",
})
.then((response) => {
//here you will receive the jwt token and the user details
console.log(response);
});
8. 테스트 통합
- ASP.NET Core Web API 애플리케이션을 시작합니다.
- 프런트엔드 애플리케이션을 시작하세요
- 프런트엔드 애플리케이션에서 다음을 클릭합니다. SSO 로그인 추가하신 버튼
- 후 SAML 로그인, 프런트엔드 애플리케이션으로 다시 리디렉션됩니다. 이 시점에서 프런트엔드 애플리케이션은 다음을 호출합니다. /api/gettoken 토큰과 사용자 세부 정보를 반환하는 엔드포인트입니다. 다음을 사용할 수 있습니다. JWT 토큰 추가적인 API 호출을 하려면.
참고: 토큰 검증을 위해 API에서 Authorize 속성을 사용하는 경우 여러 정책이 등록되었으므로 인증 정책을 지정해야 합니다.
JWT 사용 시: [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
관련 기사
연락처
ASP.NET Core SAML SSO 설정과 관련하여 궁금한 점이 있으시면 aspnetsupport@xecurify.com 으로 문의해 주세요 . 저희 팀에서 고객님의 요구사항에 가장 적합한 솔루션/플랜을 선택하실 수 있도록 도와드리겠습니다.
