<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Dev.comwls | Feed]]></title><description><![CDATA[comwls의 웹 개발 블로그입니다. 프론트엔드 와 PHP을 주로 다루며 nodejs와 그 외 기술에도 지속적으로 관심을 기울이고 있습니다.]]></description><link>https://comwls.github.io</link><generator>GatsbyJS</generator><lastBuildDate>Wed, 29 Apr 2020 10:06:24 GMT</lastBuildDate><item><title><![CDATA[GCP apigee]]></title><description><![CDATA[이글은 개인적인 블로그 글이며 기초적인 글은 생략되고 진행될수 있음을 말씀드립니다.  apigee 란  apigee(아피지,애피지)란 GCP(Google Cloud Platform)의 API Gateway로 
 GCP…]]></description><link>https://comwls.github.io/apigee/</link><guid isPermaLink="false">https://comwls.github.io/apigee/</guid><pubDate>Wed, 22 Apr 2020 15:26:00 GMT</pubDate><content:encoded>&lt;p&gt;이글은 개인적인 블로그 글이며 기초적인 글은 생략되고 진행될수 있음을 말씀드립니다. &lt;/p&gt;
&lt;br/&gt;
&lt;h2 id=&quot;apigee-란&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#apigee-%EB%9E%80&quot; aria-label=&quot;apigee 란 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;apigee 란&lt;/h2&gt;
&lt;p&gt; apigee(아피지,애피지)란 GCP(Google Cloud Platform)의 API Gateway로
GCP와 상관 없는 다른 엔드포인트를 호출해서 사용할수 있다.&lt;/p&gt;
&lt;h2 id=&quot;apigee-시작하기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#apigee-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0&quot; aria-label=&quot;apigee 시작하기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;apigee 시작하기&lt;/h2&gt;
&lt;h3 id=&quot;apigee-가입하기-무료-평가판&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#apigee-%EA%B0%80%EC%9E%85%ED%95%98%EA%B8%B0-%EB%AC%B4%EB%A3%8C-%ED%8F%89%EA%B0%80%ED%8C%90&quot; aria-label=&quot;apigee 가입하기 무료 평가판 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;apigee 가입하기 &lt;a href=&quot;https://cloud.google.com/apigee/api-management?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;무료 평가판&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;무료평가판은 60일 유지&lt;/li&gt;
&lt;li&gt;카드 정보를 입력할 필요 없음&lt;/li&gt;
&lt;li&gt;한달 기준 10만건 호출 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;apigee-프로젝트-만들기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#apigee-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; aria-label=&quot;apigee 프로젝트 만들기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;apigee 프로젝트 만들기&lt;/h3&gt;
&lt;h4 id=&quot;api-proxies&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#api-proxies&quot; aria-label=&quot;api proxies permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;API Proxies&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;URL endpoint 지점 &lt;/li&gt;
&lt;li&gt;배포 환경은 test, production 두가지가 존재 한다.&lt;/li&gt;
&lt;li&gt;배포 환경별로 URL이 바뀐다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;api-products&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#api-products&quot; aria-label=&quot;api products permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;API Products&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;API Proxy를 묶는 그룹단위 개념 &lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;apps&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#apps&quot; aria-label=&quot;apps permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Apps&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;ClientId랑 ClientSecret이 발급되는곳 &lt;/li&gt;
&lt;li&gt;Proudct를 Apps에 추가해주면 해당 키,토큰 값들이 이곳에 묶인다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;oauth-토큰-발급-프록시-만들기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#oauth-%ED%86%A0%ED%81%B0-%EB%B0%9C%EA%B8%89-%ED%94%84%EB%A1%9D%EC%8B%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; aria-label=&quot;oauth 토큰 발급 프록시 만들기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OAuth 토큰 발급 프록시 만들기&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/apigee/api-platform-samples/blob/master/default-proxies/oauth/oauth.zip?raw=true&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;예시 토큰 번들 다운&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;프록시 생성 버튼을 누른다.&lt;/li&gt;
&lt;li&gt;Upload proxy bundle 누른다&lt;/li&gt;
&lt;li&gt;다운받은 예시 번들을 업로딩 한다&lt;/li&gt;
&lt;li&gt;해당 URL에 /accesstoken  추가하여 POST 타입으로 데이터 전송하면 토큰이 발급예정( 아직 clinetId랑 시크릿이 없어서 발급안됨 )&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;oauth-토큰-미들웨어-만들기&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#oauth-%ED%86%A0%ED%81%B0-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot; aria-label=&quot;oauth 토큰 미들웨어 만들기 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OAuth 토큰 미들웨어 만들기&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;프록시 생성 버튼을 누른다.&lt;/li&gt;
&lt;li&gt;Reverse proxy (most common) 을 선택 한다.&lt;/li&gt;
&lt;li&gt;Existing API에  &lt;a href=&quot;http://mocktarget.apigee.net&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;http://mocktarget.apigee.net&lt;/a&gt; 추가하고&lt;/li&gt;
&lt;li&gt;다음을 누른후 Security 항목에 OAuth 2.0을 선택하고 next룰 누른다.&lt;/li&gt;
&lt;li&gt;Virtual Host 항목에 secure를 선택한다.&lt;/li&gt;
&lt;li&gt;Optional Deployment에 prod(production), test 룰 선택한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;api-proxies-를-product에-추가한다&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#api-proxies-%EB%A5%BC-product%EC%97%90-%EC%B6%94%EA%B0%80%ED%95%9C%EB%8B%A4&quot; aria-label=&quot;api proxies 를 product에 추가한다 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;API Proxies 를 Product에 추가한다&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;좌측 항목에 Publish안에 API Proudcts를 선택한다.&lt;/li&gt;
&lt;li&gt;Name, Display 항목에 내용을 채우고 아래 API resources 항목에 API proxies 항목에 Add a proxy를 선택한다.&lt;/li&gt;
&lt;li&gt;전에 만든 토큰만들기, 토큰 미들웨어 프록시 항목을 추가하고 저장한다.
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/bf371dab399e826c8fddaf2e23c0a26e/2e7db/Product.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 48.394241417497234%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA3klEQVQoz51SWw7DIAzj/ufbGSbtk4oRHoEspmNiCDpplqxUxY3jFBNilFrrJXNOwsxSRU5eaE1KSUop7QPUERAA1j3FHoeEEBpX2g7jnBM0hRB1dgQ8BSEiiZoGOlSwrCb03rcHOO5cibxYaz8Tgjln4YIm34lMrWW7DxigYrpDI8O8N+xnTfdmi0zE6lYl6eIRGc5J2SbQXfV9zexnowYpTAg3/fihLO1v5qFZB+t7TAdid6znK6CpSXzXXdilYI4/xtzBUNR7psPMEf6liRH36owZM3ZRMdrPy77jCwq9FmK+UtQbAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Product&quot;
        title=&quot;Product&quot;
        src=&quot;/static/bf371dab399e826c8fddaf2e23c0a26e/799d3/Product.png&quot;
        srcset=&quot;/static/bf371dab399e826c8fddaf2e23c0a26e/00d96/Product.png 148w,
/static/bf371dab399e826c8fddaf2e23c0a26e/0b23c/Product.png 295w,
/static/bf371dab399e826c8fddaf2e23c0a26e/799d3/Product.png 590w,
/static/bf371dab399e826c8fddaf2e23c0a26e/2a3d6/Product.png 885w,
/static/bf371dab399e826c8fddaf2e23c0a26e/ae92f/Product.png 1180w,
/static/bf371dab399e826c8fddaf2e23c0a26e/2e7db/Product.png 1806w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;apps를-이용하여-키-발급하기--clientid-clientsecret&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#apps%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%ED%82%A4-%EB%B0%9C%EA%B8%89%ED%95%98%EA%B8%B0--clientid-clientsecret&quot; aria-label=&quot;apps를 이용하여 키 발급하기  clientid clientsecret permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Apps를 이용하여 키 발급하기 ( Client&lt;em&gt;Id, Client&lt;/em&gt;Secret)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;좌측 항목에 Publish 안에 Apps를 선택한다.&lt;/li&gt;
&lt;li&gt;Name, Display Name 을 채우고 Credntials 항목에 키값의 시간을 정한다&lt;/li&gt;
&lt;li&gt;해당 우측에 Product 항목에 Add product를 누른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  &lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/8882a3fc84518d666907184694d4e291/2e7db/Apps.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 47.56367663344408%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAA9klEQVQoz41S0ZKDIBDj/7/rfuUenXoVRNiFbYJlDpm2052JoMa4yeKWZbGUkpVSTFXfA+/LEzpxBQhJ7Of3bu44jkbKOZuIWK31Ahafb9vW1s7jN1feyXWb9+gwNyLRRVh9TwfrutoRo8V9b/fsbORwVcDdfTAfggnEOmkuWtwhFOGG4J5dvipHKxSk9WbnVX74WPnDjg9ZO7Y/1pwhDRV0pPipMRLYrsx6sDtm6qg6B3wVrJbDbrc/xBIxQAiWYeIznMdQzsn9D2aEPO0KIlGIKQfSj81wfCjG2JrllHkc5DxTcq583vffVrPMixSMvNSPxG/xAAPdFWmKlH9fAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Apps&quot;
        title=&quot;Apps&quot;
        src=&quot;/static/8882a3fc84518d666907184694d4e291/799d3/Apps.png&quot;
        srcset=&quot;/static/8882a3fc84518d666907184694d4e291/00d96/Apps.png 148w,
/static/8882a3fc84518d666907184694d4e291/0b23c/Apps.png 295w,
/static/8882a3fc84518d666907184694d4e291/799d3/Apps.png 590w,
/static/8882a3fc84518d666907184694d4e291/2a3d6/Apps.png 885w,
/static/8882a3fc84518d666907184694d4e291/ae92f/Apps.png 1180w,
/static/8882a3fc84518d666907184694d4e291/2e7db/Apps.png 1806w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Product를 발급하고 Restful Tool(ex:postman) 을 이용하여 발급받은 key, secret 항목을 넣어서 토쿤이 정상 발급되는지 테스트 해보면 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  &lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/df8a41ed8397476e943df48885964a9e/8a848/Token.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 51.62162162162163%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7DAAAOwwHHb6hkAAABTUlEQVQoz5WS20rDQBCG98m9EQ8g+gh64XPoTWtboeTS84nYtNAEEmo2u9lDfmc2B1QQ68DHLLOzf/4ZIkpZoigKZGmKNF0jiV+RJAnyPIdSCnVdwxiDqqoGuM5IOtta4XGtcf1GtfIDYrPZwNAjZy0s4Z1F0zRBaLlcYrFY0IfSUOvDdr0cPtQZj8ZoiCzL4L3Hz3DOYT6fYzabIY7j0MOiDN8Nb0iLNX3IDUQlZbAuKzmMaGlEdvDVFYtY60LmFTC61i2G1qIVTFXSyEUOWZaoCKV0K0hNLMYuWjeuc+iHzDiq93jqq8mQsHR4f37Cy+0N7u8ewr764EftfrZHaK1xfnaKvf1D7Owe4Oj4BFEU0Ximc+QGR3/BLoUiwWg6weXFJUZXU0wmU4zGY6xWq8HlNrA7zoLn/y22HfmbYH9oeLn0Dwa6MYe7fzj8BEmwB8DBjV4DAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Token&quot;
        title=&quot;Token&quot;
        src=&quot;/static/df8a41ed8397476e943df48885964a9e/799d3/Token.png&quot;
        srcset=&quot;/static/df8a41ed8397476e943df48885964a9e/00d96/Token.png 148w,
/static/df8a41ed8397476e943df48885964a9e/0b23c/Token.png 295w,
/static/df8a41ed8397476e943df48885964a9e/799d3/Token.png 590w,
/static/df8a41ed8397476e943df48885964a9e/2a3d6/Token.png 885w,
/static/df8a41ed8397476e943df48885964a9e/ae92f/Token.png 1180w,
/static/df8a41ed8397476e943df48885964a9e/8a848/Token.png 1480w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;참조&lt;/p&gt;
&lt;hr/&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.apigee.com/api-platform/tutorials/secure-calls-your-api-through-oauth-20-client-credentials?hl=ko&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener noreferrer&quot;&gt;구글doc OAuth 기능 붙이기&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[API Gateway 정리]]></title><description><![CDATA[이글은 개인적인 블로그 글이며 기초적인 글은 생략되고 진행될수 있음을 말씀드립니다.  API Gateway란  API 게이트웨이는 API 클라이언트와 서비스 사이에 프록시 처럼 위치하여
 클라이언트로 부터 온 API…]]></description><link>https://comwls.github.io/api-gateway/</link><guid isPermaLink="false">https://comwls.github.io/api-gateway/</guid><pubDate>Tue, 21 Apr 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;이글은 개인적인 블로그 글이며 기초적인 글은 생략되고 진행될수 있음을 말씀드립니다. &lt;/p&gt;
&lt;br/&gt;
&lt;h2 id=&quot;api-gateway란&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#api-gateway%EB%9E%80&quot; aria-label=&quot;api gateway란 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;API Gateway란&lt;/h2&gt;
&lt;p&gt; API 게이트웨이는 API 클라이언트와 서비스 사이에 프록시 처럼 위치하여
클라이언트로 부터 온 API 요청을 받아서, 서비스로 라우팅 하는 역할을 한다.
각각 서비스에서 구현해야 하는 기능을 API 게이트웨이 단에서 통합함으로써,
서비스 개발을 간편한게 할수 있고, 메세지 포멧 변경이나 플로우 컨트롤 같은
고급 기능을 사용하여 기존 API 호출에 추가적인 기능을 더 할수 있는
유연성을 가질수 있게 된다.&lt;/p&gt;
&lt;h2 id=&quot;api-gateway의-대표적-기능-5가지&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#api-gateway%EC%9D%98-%EB%8C%80%ED%91%9C%EC%A0%81-%EA%B8%B0%EB%8A%A5-5%EA%B0%80%EC%A7%80&quot; aria-label=&quot;api gateway의 대표적 기능 5가지 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;API Gateway의 대표적 기능 5가지&lt;/h2&gt;
&lt;h3 id=&quot;인증&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%9D%B8%EC%A6%9D&quot; aria-label=&quot;인증 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;인증&lt;/h3&gt;
&lt;p&gt; API 호출할때, API 호출에 대한 인증을 수행한다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;서버간 API 통신일 경우에는 API Key 발급&lt;/li&gt;
&lt;li&gt;다수의 클라이언트간의 통신일 경우에는 사용자 게정 인증(Oauth) 이후 JWT 토큰 발급&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;모니터링-로깅&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EB%A1%9C%EA%B9%85&quot; aria-label=&quot;모니터링 로깅 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;모니터링, 로깅&lt;/h3&gt;
&lt;p&gt; API 호출에 대한 모니터링을 통해서 API 별 모니터링을 할수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API별 응답시간, 장애율, 호출 횟수를 모니터링 &lt;/li&gt;
&lt;li&gt;API별 호출 로깅&lt;/li&gt;
&lt;li&gt;Metering &amp;#x26; Charging
API를 대외로 서비스 하는 경우 API의 호출량에 따라 과금이 붙는 경우에는
호출 횟수를 통제할때 필요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;메시지-플로우-컨트롤&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%94%8C%EB%A1%9C%EC%9A%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4&quot; aria-label=&quot;메시지 플로우 컨트롤 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;메시지 플로우 컨트롤&lt;/h3&gt;
&lt;p&gt; 메시지 플로우 컨트롤은 클라이언트로 부터 들어온 메시지의 흐름을 바꾸는 방법, 같은 API라도 &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;카날리 배포 : 버전에 따라서 구버전과 새버전으로 트래픡을 9:1로 라우팅 하는 방법&lt;/li&gt;
&lt;li&gt;리전 변경 : 들어온 API의 클라이언트의 위치에 따라 미국이나 한국에 있는 서비스로 라우팅하는 로직&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;메시지-변경&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EB%A9%94%EC%8B%9C%EC%A7%80-%EB%B3%80%EA%B2%BD&quot; aria-label=&quot;메시지 변경 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;메시지 변경&lt;/h3&gt;
&lt;p&gt; 헤더에 있는 내용을 바디로 붙이거나, 다른 API를 호출해서 응답메시지를
두 API를 합해서 응답을 해주는 기능등을 구현할수 있다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;프르토콜 변환 : SOAP/XML 기반의 메세지를 REST로 변환하는 기능
&lt;br/&gt;&lt;/li&gt;
&lt;li&gt;호출 패턴 변환 : API 서버가 큐를 기반으로한 비동기 메시지 처리 패터일때, API 게이트웨이에서 이를
동기화 처리 패턴으로 변경해서 클라이언트 입장에서 동기로 호출을 하면 API서버에서는 비동기로 호출하느 형태와 같이 호출 패턴을 변경할수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;오케스트레이션-매쉬업&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#%EC%98%A4%EC%BC%80%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%9D%B4%EC%85%98-%EB%A7%A4%EC%89%AC%EC%97%85&quot; aria-label=&quot;오케스트레이션 매쉬업 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;오케스트레이션 (매쉬업)&lt;/h3&gt;
&lt;p&gt; API 클라이언트가 한번 호출할때 동시에 여러개의 API를 호출하도록 API 게이트웨이에서 호출 해주는 방식&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;클라이언트에서 &lt;code class=&quot;language-text&quot;&gt;상품&lt;/code&gt; API를 호출하면 API 게이트웨이가 &lt;code class=&quot;language-text&quot;&gt;상품구매&lt;/code&gt;,&lt;code class=&quot;language-text&quot;&gt;상품 추천&lt;/code&gt; API를 호출해서
상품 구매완료 메시지와 함께 추천 상품 리스트를 한번에 리턴하는 방식이다.&lt;/li&gt;
&lt;/ul&gt;</content:encoded></item><item><title><![CDATA[Oauth2.0에 대한 정리]]></title><description><![CDATA[회사에서 프로젝트를 진행하며 Oauth에 대한 종류에 대해서 공부한것을 정리할려고 합니다. 크게 4종류만 소개하고 
refreshToken과 device…]]></description><link>https://comwls.github.io/oauth/</link><guid isPermaLink="false">https://comwls.github.io/oauth/</guid><pubDate>Tue, 21 Apr 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;회사에서 프로젝트를 진행하며 Oauth에 대한 종류에 대해서 공부한것을 정리할려고 합니다.&lt;/p&gt;
&lt;p&gt;크게 4종류만 소개하고
refreshToken과 device는 제외하고 진행합니다.
또한 개인적인 블로그 글이며 기초적인 글은 생략되고 진행될수 있음을 말씀드립니다. &lt;/p&gt;
&lt;br/&gt;
&lt;h2 id=&quot;oauth&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#oauth&quot; aria-label=&quot;oauth permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;OAuth&lt;/h2&gt;
&lt;h3 id=&quot;resource-owner-password-credentials-grant-type-리소스-소유자-암호-자격-증명-타입&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#resource-owner-password-credentials-grant-type-%EB%A6%AC%EC%86%8C%EC%8A%A4-%EC%86%8C%EC%9C%A0%EC%9E%90-%EC%95%94%ED%98%B8-%EC%9E%90%EA%B2%A9-%EC%A6%9D%EB%AA%85-%ED%83%80%EC%9E%85&quot; aria-label=&quot;resource owner password credentials grant type 리소스 소유자 암호 자격 증명 타입 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Resource Owner Password Credentials Grant Type (리소스 소유자 암호 자격 증명 타입)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Client에 아이디/패스워드를 받아 아이디/패스워드로 직접 access token을 받아오는 방식이다.&lt;/li&gt;
&lt;li&gt;Client가 신용이 없을 때에는 사용하기에 위험하다는 단점이 있다. &lt;/li&gt;
&lt;li&gt;클라이언트가 확실한 신용이 보장될 때 사용할 수 있는 방식이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/d65375b99b093e2a939986deb8e4b682/6d990/ResourceOwnerPasswordCredentialsGrantType.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 33.13748531139835%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAACXBIWXMAAAsSAAALEgHS3X78AAAAnklEQVQY051QSQ7DIBDj/98EpLApLGHLQusWFUVFvdQHA4bxjCExxseE67q01tu2DaW1BnbOSSmVUuB1XQml9DiOuT6ltO/7lwil1oqrUgo2xHt/nmfOOX2AWWAHpXebAYt+RTAJPNwN1lpUcs7xCC5oguNgdEKD7kLuwe7xjDEhBAQTQizLMhgiY+xncQdGyG+MLCMRGD/6Ku7Lf3gCsFKZJGM3VjgAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ResourceOwnerPasswordCredentialsGrantType&quot;
        title=&quot;ResourceOwnerPasswordCredentialsGrantType&quot;
        src=&quot;/static/d65375b99b093e2a939986deb8e4b682/799d3/ResourceOwnerPasswordCredentialsGrantType.png&quot;
        srcset=&quot;/static/d65375b99b093e2a939986deb8e4b682/00d96/ResourceOwnerPasswordCredentialsGrantType.png 148w,
/static/d65375b99b093e2a939986deb8e4b682/0b23c/ResourceOwnerPasswordCredentialsGrantType.png 295w,
/static/d65375b99b093e2a939986deb8e4b682/799d3/ResourceOwnerPasswordCredentialsGrantType.png 590w,
/static/d65375b99b093e2a939986deb8e4b682/6d990/ResourceOwnerPasswordCredentialsGrantType.png 851w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;!-- 
```javascript
[&apos;a&apos;, &apos;b&apos;, &apos;c&apos;].includes(&apos;a&apos;) // true
```

코드를 보면 쉽게 역할을 알 수 있습니다.
배열에 아이템이 존재하는지 Boolean 값을 반환합니다.

이 함수로 이제 `[&apos;a&apos;,&apos;b&apos;,&apos;c&apos;].indexOf(&apos;a&apos;) &gt; -1` 대신 좀 더 간결한 코드가 가능합니다. --&gt;
&lt;h3 id=&quot;client-credentials-grant-type-클라이언트-자격-증명-타입&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#client-credentials-grant-type-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-%EC%9E%90%EA%B2%A9-%EC%A6%9D%EB%AA%85-%ED%83%80%EC%9E%85&quot; aria-label=&quot;client credentials grant type 클라이언트 자격 증명 타입 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Client Credentials Grant Type (클라이언트 자격 증명 타입)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;애플리케이션이 Confidential Client일 때 id와 secret을 가지고 인증하는 방식이다. (기존 서버 방식)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 538px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/b13042cbfbffb6f0b4a497a4f30d1d96/722c2/ClientCredentialsGrantType.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 37.9182156133829%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsSAAALEgHS3X78AAAAvklEQVQY042QyRKCMBBE+f8f5MYBBGQrtkCAhOWZKBUttOxDarbu6Ym3bdu6rsuy7N8xTVNd133fN03Ttq19tdYePaVUURQ/yFVVxXHMDO/dgGAcRy/Pc6pBEFjhS7IyYNVsQIyXx2ZskyNBLqUkHoYhSZKbQRRFZVkyzV0MhGHIjafo0zbG7ASALx3ML0D2fV8I8UlO01Q54HuyLKOIKPZsEY8c2HXdBZmdLl8bnCldUrTY/0bmDNr7H2C5mx4JtdFbzyBnrgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ClientCredentialsGrantType&quot;
        title=&quot;ClientCredentialsGrantType&quot;
        src=&quot;/static/b13042cbfbffb6f0b4a497a4f30d1d96/722c2/ClientCredentialsGrantType.png&quot;
        srcset=&quot;/static/b13042cbfbffb6f0b4a497a4f30d1d96/00d96/ClientCredentialsGrantType.png 148w,
/static/b13042cbfbffb6f0b4a497a4f30d1d96/0b23c/ClientCredentialsGrantType.png 295w,
/static/b13042cbfbffb6f0b4a497a4f30d1d96/722c2/ClientCredentialsGrantType.png 538w&quot;
        sizes=&quot;(max-width: 538px) 100vw, 538px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;implicit-grant-암시적-승인&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#implicit-grant-%EC%95%94%EC%8B%9C%EC%A0%81-%EC%8A%B9%EC%9D%B8&quot; aria-label=&quot;implicit grant 암시적 승인 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Implicit Grant (암시적 승인)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Public Client인 브라우저 기반의 애플리케이션(Javascript application)이나 모바일 애플리케이션에서 바로 Resource Server에 접근하여 사용할 수 있는 방식이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/af2566512dd6f4f99e116fcd22d67c10/db585/ImplicitGrant.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 41.39728884254431%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsSAAALEgHS3X78AAAAzUlEQVQY04WQ2w6DMAxD+/9/yQMIKONWoNwKO6sF2iSkWWqVpHbcxGzbNk3TGUHQti0V4hDCOI51Xb8iiCkex9E0DWlVVTANx1orMQLv/TAMXddBosu6rqTU932XmIDisiwEBgZUbnLuPM/LskzTNMsy9DgkSSLZeSFEEBga6NvkMJxz/LDvexfhI85fPIjVGxmGmDOt/qyh/jjrWbuRM4Og16qenZnz3iQ3PugZmADbeZ559RewoWNRFJJ8nGHcXWFonzS9dxu+QFGvkN+KvtGj5j0SCgAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;ImplicitGrant&quot;
        title=&quot;ImplicitGrant&quot;
        src=&quot;/static/af2566512dd6f4f99e116fcd22d67c10/799d3/ImplicitGrant.png&quot;
        srcset=&quot;/static/af2566512dd6f4f99e116fcd22d67c10/00d96/ImplicitGrant.png 148w,
/static/af2566512dd6f4f99e116fcd22d67c10/0b23c/ImplicitGrant.png 295w,
/static/af2566512dd6f4f99e116fcd22d67c10/799d3/ImplicitGrant.png 590w,
/static/af2566512dd6f4f99e116fcd22d67c10/2a3d6/ImplicitGrant.png 885w,
/static/af2566512dd6f4f99e116fcd22d67c10/db585/ImplicitGrant.png 959w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;authorization-code-grant-권한-부여-코드-승인-타입&quot; style=&quot;position:relative;&quot;&gt;&lt;a href=&quot;#authorization-code-grant-%EA%B6%8C%ED%95%9C-%EB%B6%80%EC%97%AC-%EC%BD%94%EB%93%9C-%EC%8A%B9%EC%9D%B8-%ED%83%80%EC%9E%85&quot; aria-label=&quot;authorization code grant 권한 부여 코드 승인 타입 permalink&quot; class=&quot;anchor before&quot;&gt;&lt;svg aria-hidden=&quot;true&quot; focusable=&quot;false&quot; height=&quot;16&quot; version=&quot;1.1&quot; viewBox=&quot;0 0 16 16&quot; width=&quot;16&quot;&gt;&lt;path fill-rule=&quot;evenodd&quot; d=&quot;M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;Authorization Code Grant (권한 부여 코드 승인 타입)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;일반적인 웹사이트에서 소셜로그인과 같은 인증을 받을 때 가장 많이 쓰는 방식으로
기본적으로 지원하고 있는 방식이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto;  max-width: 590px;&quot;
    &gt;
      &lt;a
    class=&quot;gatsby-resp-image-link&quot;
    href=&quot;/static/5c83e3b1838edfde5b7cc75871f717ef/a1f45/AuthorizationCodeGrant.png&quot;
    style=&quot;display: block&quot;
    target=&quot;_blank&quot;
    rel=&quot;noopener&quot;
  &gt;
    &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.8695652173913%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsSAAALEgHS3X78AAABGklEQVQoz4WSyQ6DMAxE+f+P5AISiB3C2lLoq0dBAoE6h8h2PPbYSbDv+zRN27at61rX9TzPu8eyLE3TEKyqCuNlqA3jOJIQkJEkCScOobfBOdf3PUXJxqAiCR8DNml0+pHx27YlD6Moiq7rKBxFURzHeZ6TGoYhtQ450ig7wBmGQT5VyKYQ/MagztJ1kJF2InNKNqllWVYGkXH/k5ENAYWtBy5TcKJFNOFKlmZmRjbNMWhIZ1xuRw9NxNVNZ6KDgVXB17ZxtW2gFWRZdu3MzvQ8dHAeRLglOBvg4xK8WRgTSmeappTHlWb1BDTQK2gFJzJjS6QE61dgs6HVg7i+17UzBlUZWN9GfwtX2378JIds6WTazqAST+/8BS2X8qVDemzjAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;AuthorizationCodeGrant&quot;
        title=&quot;AuthorizationCodeGrant&quot;
        src=&quot;/static/5c83e3b1838edfde5b7cc75871f717ef/799d3/AuthorizationCodeGrant.png&quot;
        srcset=&quot;/static/5c83e3b1838edfde5b7cc75871f717ef/00d96/AuthorizationCodeGrant.png 148w,
/static/5c83e3b1838edfde5b7cc75871f717ef/0b23c/AuthorizationCodeGrant.png 295w,
/static/5c83e3b1838edfde5b7cc75871f717ef/799d3/AuthorizationCodeGrant.png 590w,
/static/5c83e3b1838edfde5b7cc75871f717ef/2a3d6/AuthorizationCodeGrant.png 885w,
/static/5c83e3b1838edfde5b7cc75871f717ef/a1f45/AuthorizationCodeGrant.png 920w&quot;
        sizes=&quot;(max-width: 590px) 100vw, 590px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
      /&gt;
  &lt;/a&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item></channel></rss>