Microsoft ID 네임 스페이스 이해 (System.Web.Security, Microsoft.AspNet.Identity.Core, 대 Microsoft.AspNetCore.Identity)

user3675331

나는 누군가가 비슷한 문제를 가지고 있고 조언을 줄 수 있기를 바랍니다. 나는 꽤 오랫동안 조사했지만 확실한 답을 찾지 못했습니다.

내 설정 :

  • 1 MsSQL 데이터베이스 (System.Web.Security의 ID 테이블 포함)
  • .Net Framework의 많은 DLL (로그인에 System.Web.Security 사용)
  • DLL을 호출하는 여러 다른 프로그램 / 앱
  • .Net Framework의 WebForms GUI (로그인에 System.Web.Security 사용)

내가 원하는 것 :

  • .net Core 또는 .Net Framework에서 IdentityServer4 사용
  • .Net Framework에 DLL 유지
  • .Net Core에서 WebApi 사용
  • 새 GUI 사용 (예 : Angular 또는 Blazor)
  • WebForms의 이전 GUI를 새 GUI와 병렬로 사용 (새 GUI가 완료 될 때까지)

내 문제 : 내 DLL 및 응용 프로그램은 사용자 관리 (로그인 등)를 위해 System.Web.Security를 ​​사용합니다. 이 네임 스페이스는 .Net Core에서 지원되지 않지만 모든 DLL을 .Net Core로 변경하는 것은 너무 많은 변경을 초래할 수 있기 때문에 나에게 적합하지 않습니다. .NetFramework에 보관하고 싶습니다.

내 주요 질문 중 하나 :

  • .Net Core의 앱 (예 : WebApi, IdentityServer4) 및 .NetFramework의 앱 / Dll이 동일한 ID 용 데이터베이스 (로그인, 멤버십 등)를 사용할 수 있습니다. 즉, 다른 앱 / Dll에서 사용되는 경우 "microsoft.aspnet.identity"및 "microsoft.aspnetcore.identity"와 호환됩니다 (데이터베이스 관련).
  • 아니면 모든 앱 / dll에서 Identity-Namespaces 중 하나를 사용해야 호환됩니까? (따라서 모든 앱 / dll에서 동일한 프레임 워크를 사용해야합니다.)

이것이 내 문제를 설명하기에 충분히 짧고 명확하기를 바랍니다. 불분명 한 점이 있으면 알려주세요.

업데이트 방금이 게시물을 찾았 습니다. .NET Standard 2.0에서 Microsoft.AspNet.Identity 및 Microsoft.AspNet.Identity.EntityFramework 모든 DLL에서 .Net 표준을 사용하는 것이 옵션 일 수 있습니다. 나는 이것을 시도하고 그것이 나를 위해 잘 될 것임을 볼 것입니다. 하지만 "microsoft.aspnet.identity"및 "microsoft.aspnetcore.identity"가 .Net Standard 라이브러리에서 작동하는지 여부와 방법을 여전히 이해하지 못합니다.

결과 : .Net Standard 2.1 라이브러리에서 "Microsoft.AspNetCore.Identity", "Microsoft.EntityFrameworkCore"를 사용할 수있었습니다 (Microsoft.EntityFrameworkCore는 .Net Standard 2.1 및 net Core 3.0에서 지원됨). 그래서 이것은 좋은 소식입니다 (ID를 위해 모든 DLL을 .Net Core로 마이그레이션 할 필요는 없습니다. .Net 표준으로 마이그레이션하는 것으로 충분합니다). 하지만 .Net Framework DLL / App에서 .Net Standard 2.1 DLL을 참조 할 수 없습니다. .Net Framework가 .Net Standard 2.0까지 지원하기 때문입니다. 따라서 이것은 문제를 완전히 해결하지는 못하지만 내가하고 싶은 일에 가장 가까운 것.

업데이트 2

이 변경을 위해 많은 코드를 변경할 준비가되어 있습니다. F.ex. IdentityServer와 통신하고 모든 프로젝트에서 System.Web (.Security)과 관련된 모든 것을 제거하도록 이전 웹 애플리케이션의 인증. 여전히 나를 혼란스럽게하는 한 가지는 "microsoft.aspnet.identity"와 "microsoft.aspnetcore.identity"입니다. 모든 프로젝트에 대해 둘 중 하나를 선택해야합니까? 아니면 해당 네임 스페이스를 혼합하여 (프로젝트의 프레임 워크에 따라 다름) 하나의 데이터베이스 만 유지할 수 있습니까?

갱신 3 가 ( "그것의 대답을 내 기본적인 질문을 도왔다 때문에 나는 대답을 표시 하지 가능"). 나는 그것을 구현하려고 노력하고 거기에서 더 많은 문제가 나타나는 것을 볼 것입니다. 그러나 누군가가이 주제에 대한 더 많은 아이디어 / 경험이 있다면 여기에서 자유롭게 공유하십시오.

내가 사용한 소스 중 일부 :

크리스 프랫

둘 다 이름에 ASP.NET이 있음에도 불구하고 ASP.NET Core는 ASP.NET과 완전히 다른 프레임 워크입니다. 사람들이 그냥이 버전 점프를 만드는처럼 아니라는 것을 인식하지 않는 것 : 당신은 것입니다 귀하의 응용 프로그램을 다시 작성해야합니다.

ASP.NET 멤버십 (System.Web.Security)은 더 이상 사용되지 않으며 .NET Core에서 100 % 지원되지 않습니다. 변경되지 않을 것이며 여기에는 해결 방법이 없습니다. ASP.NET Core에서 인증을 수행하려면 처음부터 시작해야합니다.

어쨌든 Identity Server를 사용하려고하므로 기존 Web Forms 앱을 계속 지원할 수 있지만 모든 인증을 Identity Server로 이동 한 다음 Identity Server를 Web Forms 앱에서 인증 메커니즘으로 사용해야합니다. 다시, 이것은 것입니다 필요 웹 양식 응용 프로그램을 변경하는. 여기에는 다른 옵션이 없습니다.

Identity Server 측에서는 ASP.NET Identity를 포기할 수 있습니다. Identity Server는 인증 공급자 일뿐입니다. 사용자 관리와는 관련이 없습니다. 기술적으로는 이전 사용자 테이블을 계속 사용할 수 있지만 필요한 작업을 수행하려면 Identity Server에 대한 사용자 정의 프로필 및 사용자 저장소 공급자를 만들어야합니다. 솔직히, 오래 전에 사용되지 않는 사용자 관리 시스템을 지원하기 위해 많은 작업을 수행하는 것보다 여기서 Identity로 다시 시작하는 것이 좋습니다.

길고 짧지 만 여기에는 사소한 것이 없습니다. 당신이 말하는 것을하고 싶다면 엄청난 노력과 앱의 모든 부분을 변경해야하는 주요 프로젝트 에 착수 하는 것입니다. 그것이 바로 그 방법입니다. 준비가되지 않았다면 가지고있는 것을 고수하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관