source

ASP.NET MVC 5 및 WEB API 2에서 oauth2 서버를 구현하는 방법

factcode 2023. 5. 24. 22:28
반응형

ASP.NET MVC 5 및 WEB API 2에서 oauth2 서버를 구현하는 방법

먼저 제 프로젝트를 스케치하겠습니다.

인턴십을 위해서는 기존 시스템에 기능을 추가해야 합니다.제3자 클라이언트는 OAuth2를 통해 사용자가 승인한 후 AX Webservices의 데이터에 액세스할 수 있어야 합니다.클라이언트가 전화를 걸 수 있고 AX 서비스를 호출하는 '프록시 웹 서비스'를 만들어야 한다는 것은 이해하지만 OAuth2 부분에 대해서는 조금 잘 모르겠습니다.대부분의 자습서 및 안내서에서는 Facebook 또는 Google 로그인용 ASP.NET ID를 사용하는 방법에 대해 설명합니다.필요 없습니다. 기존 자격 증명을 사용해야 하므로 OAuth2 서비스를 직접 만들어야 합니다.

저는 이것에 대한 튜토리얼, 가이드 또는 설명을 찾기가 어렵습니다.OAuth2와 무엇을 해야 하는지 이해하지만, 저는 그런 일을 해본 적이 없고 시작하기가 어렵습니다.제가 필요로 하는 것과 가장 가까운 것은 이 Github repo 링크입니다. 하지만 솔루션이 구축되지 않습니다.

제가 염두에 둔 것은 고객(제3자)이 직접 등록하고 고객 ID를 취득할 수 있는 ASP.NET MVC 웹사이트를 만드는 것입니다.ASP.NET API를 사용하여 필요한 토큰과 매개 변수를 가져온 다음 DynAX 서비스에 액세스하는 API를 만들고 싶었습니다.

이것이 맞습니까, 아니면 제가 완전히 틀렸습니까?자체 oauth2 서버/서비스 구축과 관련된 모든 도움말 또는 링크가 좋을 것입니다.

타이저 주드의 멋진 블로그 게시물과 자세한 단계별 설명이 있습니다.

  1. Part 1: ASP.NET Web API 2, Owin 및 ID를 사용한 토큰 기반 인증
  2. Part 2: ASP.NET Web API 2, Owin 및 Identity를 이용한 AngularJS 토큰 인증
  3. 파트 3: 각도에서 OAuth Refresh 토큰 사용ASP .NET Web API 2 및 Owin을 이용한 JS App
  4. Part 4: ASP.NET Web API 2 Angular에서 Facebook과 Google로 외부 로그인JS앱
  5. 5부: 리소스 서버에서 OWIN 권한 부여 서버 분리

저는 또한 토큰 부분을 생성하는 방법에 대한 기사를 찾는데 어려움을 겪었습니다.저는 그것을 찾지 못했고 제 자신의 것을 썼습니다.그래서 도움이 된다면,

수행할 작업은 다음과 같습니다.

  • 새 웹 응용 프로그램 만들기
  • 다음 NuGet 패키지를 설치합니다.
    • Microsoft.Owin
    • Microsoft.Owin.Host.SystemWeb
    • Microsoft.Owin.Security.OAuth
    • Microsoft.AspNet.Identity.Owin
  • OWIN 추가startup학급

그런 다음 HTML과 JavaScript를 만듭니다.index.js) 다음 내용이 포함된 파일:

var loginData = 'grant_type=password&username=test.test@mail.com&password=test123';

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
        alert(xmlhttp.responseText);
    }
}
xmlhttp.open("POST", "/token", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(loginData);
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <script type="text/javascript" src="index.js"></script>
</body>
</html>

OWINstartup클래스의 내용은 다음과 같습니다.

using System;
using System.Security.Claims;
using Microsoft.Owin;
using Microsoft.Owin.Security.OAuth;
using OAuth20;
using Owin;

[assembly: OwinStartup(typeof(Startup))]

namespace OAuth20
{
    public class Startup
    {
        public static OAuthAuthorizationServerOptions OAuthOptions { get; private set; }

        public void Configuration(IAppBuilder app)
        {
            OAuthOptions = new OAuthAuthorizationServerOptions()
            {
                TokenEndpointPath = new PathString("/token"),
                Provider = new OAuthAuthorizationServerProvider()
                {
                    OnValidateClientAuthentication = async (context) =>
                    {
                        context.Validated();
                    },
                    OnGrantResourceOwnerCredentials = async (context) =>
                    {
                        if (context.UserName == "test.test@mail.com" && context.Password == "test123")
                        {
                            ClaimsIdentity oAuthIdentity = new ClaimsIdentity(context.Options.AuthenticationType);
                            context.Validated(oAuthIdentity);
                        }
                    }
                },
                AllowInsecureHttp = true,
                AccessTokenExpireTimeSpan = TimeSpan.FromDays(1)
            };

            app.UseOAuthBearerTokens(OAuthOptions);
        }
    }
}

프로젝트를 실행합니다.토큰이 팝업에 표시되어야 합니다.

같은 것을 조사하고 있는데 OAuth and Open을 구현하는 ID 서버를 우연히 발견했습니다.ASP.NET 맨 위에 있는 ID입니다.ASP.NET ID 및 구성원 재부팅통합되며 Entity Framework에 대한 지속성 지원을 제공합니다.

따라서 질문에 답하려면 OAuth and Open을 설정하는 방법에 대한 자세한 문서를 확인하십시오.ID 서버.

Gmail: OAuth

  • 링크로 이동
  • gmail 사용자 이름 암호로 로그인
  • 왼쪽 위에 있는 구글 메뉴를 클릭
  • API 관리자 클릭
  • 자격 증명 클릭
  • 자격 증명 생성을 클릭하고 OAuth Client를 선택합니다.
  • 웹 애플리케이션을 애플리케이션 유형으로 선택하고 이름 입력-> 인증된 리디렉션 URL 입력(예: http://localhost:53922/signin-google) -> 만들기 버튼을 클릭합니다.자격 증명이 생성됩니다.메모해 두세요.Client ID그리고.Secret ID마지막으로 확인을 클릭하여 자격 증명 팝업을 닫습니다.
  • 다음으로 중요한 단계는 다음과 같습니다.Google API왼쪽 창에서 Overview(개요)를 클릭합니다.
  • 를 클릭합니다.Google APISocial API 섹션 아래에 있습니다.
  • 사용을 클릭합니다.

이것은 모두 구글 부분에서 나온 것입니다.

프로그램으로 돌아와서 열기App_start/Startup.Auth.cs그리고 다음 스니펫의 주석을 제거합니다.

        app.UseGoogleAuthentication(new GoogleOAuth2AuthenticationOptions()
        {
            ClientId = "",
            ClientSecret = ""
        });

업데이트ClientId그리고.ClientSecret의 가치관으로Google API이미 생성한 자격 증명입니다.

  • 응용 프로그램 실행
  • 로그인 클릭
  • '다른 섹션을 사용하여 로그인' 섹션 아래에 Google 버튼이 표시됩니다.
  • Google 버튼 클릭
  • 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다.
  • gmail 사용자 이름과 암호를 입력하고 로그인을 클릭합니다.
  • 이렇게 하면 OAuth가 수행되고 애플리케이션으로 돌아와 다음에 등록하라는 메시지가 표시됩니다.Gmail이드
  • 합니다.Gmail응용프로그램 데이터베이스에 ID를 입력합니다.
  • ID 세부 정보가 정상 등록으로 상단에 표시됩니다.
  • Gmail을 통해 로그아웃하고 다시 로그인하십시오.그러면 사용자가 자동으로 앱에 로그인됩니다.

언급URL : https://stackoverflow.com/questions/26755573/how-to-implement-oauth2-server-in-asp-net-mvc-5-and-web-api-2

반응형