Cloud Foundery API를 사용하는 첫 번째 인증 방법

5082 단어 cloudfoundry

개시하다


여름방학의 자유 연구.이 기사를 읽으면 일에 도움이 되지 않고 키가 커져 여자친구를 사귀지만 어디를 봐도 메시지가 없어 그만큼 열심히 쓰게 된다.
그나저나 코미켓에 참가한 첫날 그곳에서 매혹적인 감기에 걸려서 일주일 동안 꼬박 잤어요. 제 여름방학은 이 자유로운 연구와 아내에게 감기를 전염시키는 실제 성적으로 끝났어요.죽은 귀신.

나는 네가 제일 싫어.


나는 가끔 누군가가 Could Foundery를 사용한다고 생각한다.
일반적인 경우cf 명령을 사용하여 터미널에서 조작을 시작하면 충분하다. 예를 들어bot에서CloudFundry를 조작할 때 특히 CloudFundry에 구축된 서버에서 이동하고 싶은bot에서CloudFundry를 조작하면 충분하다.절대 그 서버cf에 명령을 입력하지 않았잖아!뭐야!어쩌면 좋아!힐문한다!!

Cloud Foundery API를 준비했습니다.


안심하세요.클라우드 파운드리 API라는 걸 준비했어요.
가능하지만 자신 없어요cf 지령 내용은 이 API를 두드리는 것일 뿐이라고 생각해요.어때요?어떠세요?
그럼 API가 준비되면 전화하면 돼요.잘 됐다.내 생각에 이 문서는 로그인 방법에 대해 아무 것도 쓰지 않았겠지?죽는다

그래서 제가 찾아봤어요.


이 보도의 주제.토큰에 로그인하면 마음대로 사용할 수 있기 때문에 토큰의 설치 방법을 조사했다.
cf-client라는 npm 모듈이 있는데 처음에는 이걸 사용하려고 했지만 마지막 업데이트는 2년 전이었다. 설치하면 의존 관계의 다른 모듈은duplicated, 취약성 경고 등으로 사용을 포기했다.다만, 이동해야 하기 때문에 로그인 부분만 참고하여 설치한 후 스스로 설치했습니다.

순서



어수선하지만 없는 것보다 낫다.그림의 CloudFundry API URL은 cf login일 때 지정된 URL입니다.여기서 잠깐 api.cf.example.com 합시다.
대략적인 절차는 이렇다.

  • API에 대한 정보를 보려면 api.cf.example.com/v2/info에 액세스하십시오.
  • 얻은 정보에 URLauthorization_endpoint이 있습니다.로그인 서버의 URL입니다.
  • ${authorization_endpoint}/oauth/token이 URL을 방문하십시오.이곳에는 함정이 많다.
  • token 세트 반환.acees_나 토켄 샀어!그리고 보면서API 문서 API 두드리기!
  • 이런 느낌이야.

    함정.


    상술한 1, 2, 4에는 함정이 없다.아뇨, 위 서열이 필요합니다. API 문서의 어디에 쓰여 있는지 전혀 알 수 없는 함정이 있지만 그리 대단한 함정은 아닙니다.그것보다 3개의 토큰을 따낸 부분에 큰 함정이 있어.

    트랩 1:authorizationendpoint에 접근하는 것도 의미가 없어요.

    authorization_endpoint 도대체 엔포인트 말이야. 이 녀석/oauth/token에게 표를 다시 주지 않으면 안 돼.이 API 메시지는 어디에 쓰여있을까...

    트랩 2: Basic 인증

    ${authorization_endpoint}/oauth/token 암호가 없는 Basic 인증이 필요합니다.
    Authorization 헤더에 Basic Y2Y6를 써서 너에게 건네주어야 한다.
    너 그거 알아!

    트랩 3: Content-Type 및payload


    연락처는application/x-www-form-urlencoded입니다.
    페이로드의 경우grant_type=password&client_id=cf&username=${username}&password=${password}이런 플레인 텍스트를 쓰세요.
    나는 통신에 axios를 사용했기 때문에 좀 푹 빠졌다.

    요약된 코드(대략)

    const axios = require('axios');
    
    axios.post(`${authorization_endpoint}/oauth/token`, 
      `grant_type=password&client_id=cf&username=${username}&password=${password}`,
      {
          headers: {
            Authorization: 'Basic Y2Y6',
            "Content-Type": 'application/x-www-form-urlencoded'
          }
      }
    )
    .then(res => {
      console.log(res.data); // tokenが表示されるはず
    });
    
    
    이렇게 하면 순조롭게 토큰을 얻을 수 있다.

    총화와 감상


    Client Library를 쓴 사람들은 도대체 어떤 문서에 근거해 이런 처리를 썼을까, 수수께끼지만 이미 시작됐고 더 이상 하고 싶지 않아서 이 정도면 된 것 같아요.
    힘들게 만들어낸 기능이지만 실제로 봇을 넣으려고 해보니'아, 전혀 필요 없는 기능, 내가 해낸 것 같다'는 생각이 들어 죽고 싶었다.
    여분의 말이지만 우란분절 휴가 때는 우란분절 휴가일 뿐이어서 휴일 진료소는 비지 않았다.자치체별 의사회 홈페이지를 보면 진료소가 언제 쉬고 언제 진료하는지 일람표가 나와 추천한다.내 경우는 집 근처에는 닥터 얍으로 추정되는 할아버지 진료소만 비어 있었고 볏짚에 의지하는 마음으로 할아버지 선생님께 가서 항생제를 처방해 주고 열이 내렸지만 기침은 멈추지 않았다.대단하다
    현장은 이게 다야.더 유익한 코드가 될 예정이었는데...

    좋은 웹페이지 즐겨찾기