Contact

C# IOS 로그인 인증 구현

  • IOS 토큰은 JWT로 구성
  • 아래 jwt 홈페이지에서 IOS에서 발급받은 토큰을 넣으면 아래 그림처럼 나온다.
  • 해당 예제에서는 Microsoft.IdentityModel.Tokens, System.IdentityModel.Tokens.Jwt 패키지를 사용
  • 아래는 예제 코드
var parts = Resource1.token_ios2.Split('.');
var header = parts[0];
var payload = parts[1];

// 헤더 정보가 궁금하거나 TokenValidationParameters에 ValidAudience, ValidIssuer값을 모를경우 사용
var hh = JwtHeader.Base64UrlDeserialize(header);
var pp = JwtPayload.Base64UrlDeserialize(payload);



  • apple에 key발급
  • 발급받은 json에 kid랑 토큰에 kid랑 일치
 // 꼭 key를 발급받아야함. kid가 토큰 header에 kid와 일치
string url = "https://appleid.apple.com/auth/keys";
string responseText = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Timeout = 30 * 1000;
using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse()) {
     HttpStatusCode status = resp.StatusCode;
     Console.WriteLine(status);
 Stream respStream = resp.GetResponseStream(); using (StreamReader sr = new StreamReader(respStream)) {     responseText = sr.ReadToEnd(); }
 }  
  • 발급받은 key와 정보로 객체 생성
 // 발급받은 key를 사용
var jwks = new JsonWebKeySet(responseText);

// jwt.io 사이트에서 encoded시에 나오는 iss,aud
var validationParameters = new TokenValidationParameters {
     IssuerSigningKeys = jwks.Keys,
     ValidAudience = "aud",  // aud는 어플리케이션id 
     ValidIssuer = "iss", // iss는 고정 
     ValidateLifetime = true,
     ValidateAudience = true,
     ValidateIssuer = true,
 }; 
  • 토큰과 위에서 생성한 객체로 인증
  var tokenHandler = new JwtSecurityTokenHandler();
 try {
     var claimsPrincipal = tokenHandler.ValidateToken(Resource1.token_ios2, validationParameters, out SecurityToken securityToken);
     if (securityToken == null) {
         // 인증 실패
     }
 } catch (Exception ex) {
     // 인증 실패
     Console.WriteLine(ex);
 } 

사회초년생 신차구입방법

1. 서비스
여러 지점을 가서 영맨에게 견적을 받겠지만 차값은 다 똑같습니다. 서울이라고 비싸게 팔지도 않습니다.(단,전시차는 예외입니다.) 상담할때 그냥 서비스부터 얘기하세요. 썬팅은 어떤브랜드 어떤등급, 블박은 브랜드와 품번 정확히 말해주고 맞춰주기 어렵다고 하면 나오세요. 쿨하게 나오시면 됩니다. 그리고 썬팅등급 말안하고 50만원 상당 어쩌구 저쩌구 하는 영맨 거르세요. 정 아니면 현금캐시백 요구하세요. 물론 서비스는 불법입니다. 원래 해주는것도 아니고 안해줘도 그만입니다.  적당한 선에서 타협보시길 바랍니다. 그리고 너무 파격적인 서비스도 의심해봐야 합니다. 예전에 어머니 말X부 구매할때 파격서비스 제시한 영맨이 현금캐시백 주는거, 한달을 미루면서 먹튀하려고 했던적이 있습니다.

+ 동호회카페나 디매, 다X와자동차에 견전글 올리고 영맨구합니다 하는게 더 빠를겁니다.

2. 카드할부 및 전액일시불
영맨이 카드상담사를 소개해주고 대행해 주는것이지 꼭 영맨이 제시한 할부이율과 캐시백대로 진행할 필요가 없습니다. 계약하기전에 미리 이모나 삼촌이 카드사에 일해서 따로 진행한다고 하세요. 영맨이 제시한것보다 동호회나 다X와자동차에서 하는 할부이율이 더 쌉니다. 꼭 미리 계약전에 말하셔야해요. 계약후에 말하면 안들어줍니다. 서비스와 카드따로진행은 꼭 계약전에 말하세요. 계약 진행 후에는 소비자가 을이 됩니다.

3. 공동명의
사회초년생의 신차구입이라면 보험료를 생각 안할 수 없습니다. 부모님 가족보험으로 들어가는게 훨씬 이득이라 명의 진행은 공동명의로 하세요. 요즘은 부모님 밑으로 있어도 경력인정 됩니다. 3년차쯤돼서 단독명의로 돌리시면 될것같습니다. 이것도 계약전에 분명히 말하세요. 처음에 단독명의하고 나중에 공동명의하려면 필요한 서류도 많아지고 까다로워져요. 잘못하면 매매계약서를 공동명의로 새로 써야합니다. 지분율은 나중에 가질 사람을 99로 설정하세요. 저는 나중에 제 명의로 할거라서 저99 어머니1로 했습니다. 만약 나중에 부모님 명의로 할거라면 부모님99 본인1로 하세요. 그래야 나중에 취득세를 1%만 내기때문에 돈을 아낄 수 있어요.

4. 업체선정
영맨이 진행해주는거라면 긴장의 끈을 놓지말고 물어볼거 물어보고 때때로 확인하시길 바랍니다. 썬팅 보증서랑 블박 설명서 박스 등 잘 챙기시구요. 현금 페이백이라면 썬팅브랜드 공식대리점쪽으로 알아봐서 진행하거나 동호회카페 협력업체로 지정해서 하면 될겁니다.

5. 보험가입
보험X모아 라는 사이트에 가면 각 보험사 보험료 비교를 한눈에 볼 수 있습니다. 저는 어머니께서 현X가 제일 싸서 진행했어요. 제일 비싼곳은 삼X이었는데 20만원이상 차이 났습니다. 가격 잘 알아두시고 차 출고하고 차대번호로 가입하시면 됩니다.

6. 인수
차가 출고되면 영맨이 전화줄거구요. 미리 지정한 썬팅업체로 탁송을 받으실 겁니다. 보통 썬팅업체에서 신차검수를 무료로 해줍니다. 수시로 문제 없는지 피드백 받으세요. 그리고 인수하라고 하면됩니다. 직접 꼼꼼히 보시고 인수하는게 제일 좋습니다. 신차검수리스트는 유튭이나 초록창에 검색해보시면 나옵니다.

7. 등록
영맨이 알아서해주거나 직접 자동차사업소 가셔서 진행하시면됩니다. 영맨이 해줄시 공채영수증 등록영수증 싹싹 다 가지고 오라고 하세요. 공채금은 매일 증권처럼 이율이 달라진대요. 견적서에는 높게 측정하지만 실제로는 낮게 낼수도 있죠. 그러니 영수증 잘챙겨서 영맨이 떼먹지 않게 조심하시길 바랍니다. 직접하게되면, 대행비 3~4만원 저렴하게 할 수 있고 카드무이자할부도 할 수 있다네요.

Ubuntu18.04 – EFK 구축

ElasticSearch + Fluentd + Kibana

  • 자바 11 설치(최신 elasticsearch는 자바11로 적용)
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt install openjdk-11-jdk
java -version
  • elasticsearch 설치
    • 패키지로 설치
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-amd64.deb
dpkg -i elasticsearch-7.6.2-amd64.deb
// curl 로 정상적인지 확인
curl -XGET localhost:9200
// 아래와 같이 나옴
{
   "name" : "ip-172-31-19-12",
   "cluster_name" : "elasticsearch",
   "cluster_uuid" : "hf2TTutAS1mfEiyXPNs3sQ",
   "version" : {
     "number" : "7.6.2",
     "build_flavor" : "default",
     "build_type" : "deb",
     "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
     "build_date" : "2020-03-26T06:34:37.794943Z",
     "build_snapshot" : false,
     "lucene_version" : "8.4.0",
     "minimum_wire_compatibility_version" : "6.8.0",
     "minimum_index_compatibility_version" : "6.0.0-beta1"
   },
   "tagline" : "You Know, for Search"
 }
  • kibana 설치
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.2-amd64.deb
shasum -a 512 kibana-7.6.2-amd64.deb
sudo dpkg -i kibana-7.6.2-amd64.deb
  • kibana 설정
vi /etc/kibana/kibana.yml
server.host: "localhost" => server.host: 0.0.0.0 (외부 접속)
elasticsearch.hosts: ["http://localhost:9200"] (elasticsearch 주석해제, ip는 설정에 맞게)
  • fluentd 설치
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent3.sh | sh
  • fluentd 플러그인 설치 (elasticsearch 플러그인)
sudo apt-get install make libcurl4-gnutls-dev --yes
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-record-reformer
  • td-agent.conf 수정
    • pos_file이 없으면 재시작시 문제가 생길수있다.
    • pos_file은 만들어주면 끝(권한 이슈로 에러날수있으니 파일에권한부여)
vi /etc/td-agent/td-agent.conf
<source>
  @type tail
   path /home/shotan/app.log
   pos_file /home/shotan/fluentd/log.pos
   tag gamelog
   format json
</source>

<match>
  @type elasticsearch
   host localhost
   port 9200
   logstash_format true
</match>
  • 재시작 명령어
systemctl restart elasticsearch.service 
systemctl restart td-agent
systemctl restart kibana
  • kibana 페이지 설정
  • EFK 각 사이트 주소 (다운로드 주소)
 https://docs.fluentd.org/installation/install-by-deb 
 https://www.elastic.co/kr/downloads/elasticsearch 
 https://www.elastic.co/guide/en/kibana/current/deb.html 

이마트 무알콜 맥주 리뷰

1 . Bitburger

처음맛이 완전 맥주맛이라 놀랐음.

근데 갈수록 애매한 맛…. 그래도 초반이 진짜 맥주같아서 놀람. 4/5점

2.Bavaria

첫맛은 약간꿀맛. 약간신맛. 약간쇠맛.

꿀조금탄 물에 레몬조금넣어서 캔에먹는맛.

2.5/5

3.CLAUSTHALER

레몬맛 살짝나는 맥주맛.

Babaria보다깔끔하고 맛있는듯

3.5/5