.NET에서 쉽게 OAuth2 App Flow를 사용하는 API

4154 단어 tutorialdotnet
``OAuth는 API나 서비스가 아니며 인증을 위한 공개 표준입니다. OAuth는 대리자 액세스를 보호하기 위한 표준 솔루션을 앱에 제공합니다.

흐름을 보면 구현하기가 간단해야 합니다. ... 앱용 구현을 시작할 때까지 말입니다.

전. Pinterest는 API와 함께 OAuth를 사용하지만 액세스 코드를 얻는 방법은 사용자를 Pinterest 페이지로 보내고 웹 사이트로 리디렉션하는 것입니다. 누가 자동화를 수행하는지와 같은 Server Apps에서 이것이 어떻게 가능합니까?

솔루션을 보여드리겠습니다

전제 조건


  • CodeHelper.Core.OAuth2

  • 액세스 토큰을 얻는 방법



    아이디어


    CodeHelper.Core.OAuth2 래퍼의 이면에 있는 아이디어는 액세스 토큰을 생성하고 API 끝점을 사용하는 워크로드를 줄이는 것입니다.

    목차


  • 액세스 토큰을 받을 수 있는 도구
  • 온라인 OAuth2 도구
  • 코드

  • 액세스 토큰을 사용하기 위한 손쉬운 구현

  • 액세스 토큰을 받을 수 있는 도구



    온라인 OAuth2 도구



    모든 코드로 액세스 토큰을 쉽게 생성할 수 있는 OAuth2 구현이 필요한 유명 플랫폼의 링크/도구 목록을 사용하세요.
    OAuth2 Tools

    자신을 코딩



    모든 회사가 추가 보안상의 이유로 액세스 토큰을 생성하기 위해 온라인 도구를 사용하기를 원하는 것은 아닙니다.

    따라서 흐름은 CodeHelper.Core.OAuth2 래퍼를 통해 액세스할 수 있습니다. 인터넷에 액세스할 수 있는 보안 관리자 보기를 프로젝트에 만들 수 있습니다.

    뷰는 앱 ID, 앱 시크릿, 범위 및 리디렉션 URL을 요청해야 합니다.

    플랫폼에서 앱을 만들 때 리디렉션 URL을 허용 도메인에 추가해야 하는 경우가 많습니다. URL은 localhost일 수 있습니다.

    다음 코드는 컨트롤러의 위치입니다.
    `
    public async Task OauthAppAccessPinterest(OAuthProvider model, string code)
    {
    ModelState.Clear();
    model.RedirectUri = "The URL to your View";
    if (!string.IsNullOrEmpty(code))
    {
    model.ClientId = HttpContext.Session.GetString("ID");
    model.ClientSecret = HttpContext.Session.GetString("Value");
    model.RedirectUri = HttpContext.Session.GetString("Uri");
    model.Scope = HttpContext.Session.GetString("Scope");
    model.OAuthCode = code;
      await model.GetAccessToken();
      if (!string.IsNullOrEmpty(model.AccessToken))
      {
        //-- CODE TO SAVE SECURELY YOUR ACCESS TOKEN --
        HttpContext.Session.Clear();                   
      }                 
    

    }
    else if (!string.IsNullOrEmpty(model.ClientId) &&
    !string.IsNullOrEmpty(model.ClientSecret))
    {
    HttpContext.Session.SetString("ID", model.ClientId);
    HttpContext.Session.SetString("Value", model.ClientSecret);
    HttpContext.Session.SetString("Uri", model.RedirectUri);
    HttpContext.Session.SetString("Scope", model.Scope);
    return Redirect(model.GetOAuthTokenUrl());
    }
    return View(model);
    }
    `

    액세스 토큰과 함께 OAuth2 래퍼를 사용하는 방법

    All CodeHelper Packages uses the wrapper
    `
    using CodeHelper.Core.OAuth2;

    OAuthProvider _oauthProvider = new(){ AccessCode = "ajhshjabs...."};

    //-- Some Data to post in the body
    MyClass _mydata;

    //-- Get --
    string endPointUrlGet="htps://api...";
    _mydata = _oauthProvider.GetJson(endPointUrlGet);

    //-- Post --
    _mydata= new() { Name = name, Description = description, Privacy = privacy };

    string endPointUrlPost="htps://....";

    var _jsonResult = _oauthProvider.PostJson(endPointUrlPost, _mydata.GetJsonString());
    `

    설명

    Function GetJsonString()는 OAuth2 Wrapper에서 제공하는 확장 메서드이며 모든 클래스를 Json 형식으로 변환하고 HttpContent 형식으로 반환합니다. 요청 본문.

    함수GetJSon<T>()는 EndPoint를 사용하여 Get 요청을 실행하고 API의 데이터를 포함하는 역직렬화된 클래스를 반환합니다.

    함수PostJSon()는 EndPoint와 데이터를 사용하여 사후 요청을 실행합니다. 이 함수는 API의 데이터를 포함하는 Deserialized 클래스를 반환합니다.

    함수DeleteRequest()는 끝점을 사용하여 삭제 요청을 실행합니다.

    일반적으로 엔드포인트(+ 본문 데이터)를 지정하면 Wrapper가 나머지를 처리합니다.

    좋은 웹페이지 즐겨찾기