Lorawan-stack: μƒˆ(κ΄€λ¦¬μž) μ‚¬μš©μžλŠ” μ½˜μ†”μ— λŒ€ν•œ κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2019λ…„ 08μ›” 14일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: TheThingsNetwork/lorawan-stack

μš”μ•½

CLIμ—μ„œ 관리 μ‚¬μš©μžλ₯Ό 생성할 λ•Œ 이 μ‚¬μš©μžλŠ” μ½˜μ†”μ—μ„œ κ²Œμ΄νŠΈμ›¨μ΄ 및 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μƒμ„±ν•˜κ±°λ‚˜ νŽΈμ§‘ν•  수 μžˆλŠ” μΆ©λΆ„ν•œ κΆŒν•œμ΄ 없을 수 μžˆμŠ΅λ‹ˆλ‹€. 또 λ‹€λ₯Έ κ²½μš°μ— μƒˆλ‘œμš΄ 일반 μ‚¬μš©μžλŠ” μ½˜μ†”μ—μ„œ 아무것도 ν•  수 μžˆλŠ” κΆŒν•œμ΄ μ—†μŠ΅λ‹ˆλ‹€. λ²„κ·Έμ΄κ±°λ‚˜ μ‚¬μš©μžλ₯Ό μ˜¬λ°”λ₯΄κ²Œ μƒμ„±ν•˜λŠ” 방법에 λŒ€ν•œ λ¬Έμ„œκ°€ λˆ„λ½λ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ²ˆμ‹ 단계

ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ™μΌν•œ 원인과 관련이 μžˆμ„ 수 μžˆλŠ” 두 가지 κ²½μš°μž…λ‹ˆλ‹€. 첫 번째 κ²½μš°μ—λŠ” λ‚΄κ°€ μ„€μ •ν•˜μ§€ μ•Šμ€ μ‹œμŠ€ν…œμ—μ„œ μž‘μ—…ν•˜κ³  있으며 ν”„λ‘œμ„ΈμŠ€μ— λŒ€ν•œ 정보가 μ œν•œμ μž…λ‹ˆλ‹€.

사둀 1: μ™ΈλΆ€ μŠ€νƒ; μ½˜μ†”μ„ μ‚¬μš©ν•˜κΈ° 전에 버전 3.0.0으둜 μ„€μ •ν•˜κ³  3.1.0으둜 μ—…κ·Έλ ˆμ΄λ“œν•˜μ‹­μ‹œμ˜€.

  1. cli μ‹œμž‘ ν›„ ttn 3.0.0 μ„€μ •
  2. 3.1.0으둜 μ—…λ°μ΄νŠΈ
  3. μ½˜μ†” ν΄λΌμ΄μ–ΈνŠΈ μ„€μ •(및 잠재적으둜 망칠 수 있음*)
  4. --admin μ‚¬μš©μž 생성(
    5. μ½˜μ†”μ— λ‘œκ·ΈμΈν•˜κ³  κ²Œμ΄νŠΈμ›¨μ΄ 생성을 μ‹œλ„ν•©λ‹ˆλ‹€.

*μ—…κ·Έλ ˆμ΄λ“œ μ‹œ μ½˜μ†” 생성 ν”„λ‘œμ„ΈμŠ€κ°€ 잘λͺ»λœ uris둜 μˆ˜ν–‰λ˜μ–΄ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ½˜μ†” ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‚­μ œν•˜κ³  is-db λͺ…령을 μž¬μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. μ–΄μ©Œλ©΄ μš°λ¦¬λŠ” μ—¬κΈ°μ—μ„œ λ§μ³€μŠ΅λ‹ˆλ‹€.

사둀 2 : λ‚΄ μ„€μ •:

  1. μ‹œμž‘ ν›„ μ„€μ • ttn
  2. μ‹œμž‘ν•˜κΈ°μ—μ„œ κ΄€λ¦¬μž μ‚¬μš©μžλ₯Ό μ‚¬μš©ν•˜μ—¬ 일반 μ‚¬μš©μž ttn-lw-cli users create norman --name norman --primary-email-address norman@localhost 생성
  3. κ²Œμ΄νŠΈμ›¨μ΄ λ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 생성해 λ³΄μ‹­μ‹œμ˜€.

μ§€κΈˆ 무엇을 λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ?

두 경우 λͺ¨λ‘ μ„ΈλΆ€ 정보λ₯Ό μž…λ ₯ν•˜κ³  Create Gateway λ˜λŠ” Create Application λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μ½˜μ†”μ΄ Insufficient rights for user 'myuser' 둜 μ‘λ‹΅ν•©λ‹ˆλ‹€.

λΈŒλΌμš°μ € μ½˜μ†”μ—λŠ” νŠΉλ³„ν•œ 것이 μ—†μŠ΅λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ 탭에 ttn의 403 Forbidden 응닡이 ν‘œμ‹œλ©λ‹ˆλ‹€.

admin μ‚¬μš©μžλ‘œ CLIλ₯Ό 톡해 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μƒμ„±ν•˜κ³  ν•΄λ‹Ή μ‚¬μš©μžμ—κ²Œ ν• λ‹Ήν•  λ•Œ μ‚¬μš©μžλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜/κ²Œμ΄νŠΈμ›¨μ΄λ₯Ό λ³Ό 수 μžˆμ§€λ§Œ 이λ₯Ό ν΄λ¦­ν•˜λ©΄ 403 Forbidden이 ν‘œμ‹œλ©λ‹ˆλ‹€.

λŒ€μ‹  무엇을 보고 μ‹ΆμŠ΅λ‹ˆκΉŒ?

μ–΄μ¨Œλ“  μƒˆλ‘œ μƒμ„±λœ μ‚¬μš©μžλŠ” μ΅œμ†Œν•œ κ²Œμ΄νŠΈμ›¨μ΄μ™€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 슀슀둜 생성할 수 있고 곡동 μž‘μ—…μžλ‘œ 좔가될 λ•Œ 보기λ₯Ό μ—΄ 수 μžˆμ„ κ²ƒμœΌλ‘œ κΈ°λŒ€ν•©λ‹ˆλ‹€.

λ˜ν•œ μ‚¬μš©μž 생성 ν”„λ‘œμ„ΈμŠ€μ™€ μ‚¬μš©μž κΆŒν•œμ„ κ΄€λ¦¬ν•˜λŠ” 방법에 λŒ€ν•œ 더 λ§Žμ€ λ¬Έμ„œλ₯Ό κΈ°λŒ€ν•©λ‹ˆλ‹€.

ν™˜κ²½

The Things Network Stack for LoRaWAN: ttn-lw-stack
Version:             3.1.0
Go version:          go1.12.7
OS/Arch:             linux/amd64

사둀 1 ꡬ성:
μŠ€νƒ ꡬ성.txt

이λ₯Ό κ΅¬ν˜„ν•˜κΈ° μœ„ν•΄ μ–΄λ–»κ²Œ μ œμ•ˆν•©λ‹ˆκΉŒ?

λΆˆν–‰νžˆλ„ λ¬Έμ œκ°€ 어디에 μžˆλŠ”μ§€ μ „ν˜€ λͺ¨λ¦…λ‹ˆλ‹€.

이 μž‘μ—…μ„ 직접 μˆ˜ν–‰ν•˜κ³  Pull Requestλ₯Ό μ œμΆœν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

μˆ˜μ • 사항을 κ΅¬ν˜„ν•  μˆ˜λŠ” μ—†μ§€λ§Œ μ‚¬μš©μž 생성 및 κΆŒν•œ 관리에 λŒ€ν•œ λ¬Έμ„œλŠ” μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

κ΄€λ¦¬μžκ°€ μ‚¬μš©μžλ₯Ό λ§Œλ“  경우 state (및 admin ) ν•„λ“œλŠ” μš”μ²­μ—μ„œ 문자 κ·ΈλŒ€λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€. 이것은 κ΄€λ¦¬μžκ°€ λͺ…μ‹œμ μœΌλ‘œ state λ₯Ό REQUESTED 둜 μ„€μ •ν–ˆλŠ”μ§€ μ•„λ‹ˆλ©΄ κ·Έλƒ₯ λ†”λ‘μ—ˆλŠ”μ§€ μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ— μ˜λ„ν•œ λŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

μ‚¬μš©μžκ°€ κ΄€λ¦¬μžμ— μ˜ν•΄ μƒμ„±λ˜μ§€ μ•Šμ€ 경우 μš°λ¦¬λŠ” κ·Έλ“€μ˜ λͺ©ν‘œκ°€ μŠΉμΈμ„ λ°›λŠ” 것이라고 κ°€μ •ν•˜κ³  아무 것도(κ΄€λ¦¬μž 승인 μš”κ΅¬ 사항) 이λ₯Ό λ°©ν•΄ν•˜μ§€ μ•ŠλŠ” 경우 μžλ™μœΌλ‘œ μŠΉμΈμ„ λ°›μŠ΅λ‹ˆλ‹€. 그듀은 μ²˜μŒλΆ€ν„° 슀슀둜λ₯Ό κ΄€λ¦¬μžλ‘œ λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€.

μ›Ή UI의 "create user by admin" κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ state ν•„λ“œκ°€ μ„€μ •λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 것을 더 λͺ…ν™•ν•˜κ²Œ μ•Œ 수 μžˆμ§€λ§Œ REQUESTED 보닀 더 정상적인 기본값을 κ°–λŠ” 것이 쒋은 생각이라고 μƒκ°ν•©λ‹ˆλ‹€. users create APPROVED 의 state ν”Œλž˜κ·Έλ₯Ό 기본으둜 μ„€μ •ν•©λ‹ˆλ‹€.

λͺ¨λ“  6 λŒ“κΈ€

@w4tsn λ‹Ήμ‹ μ˜ ꡬ성은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? μ‹ κ·œ μ‚¬μš©μžμ— λŒ€ν•œ κ΄€λ¦¬μž 승인이 ν•„μš”ν•©λ‹ˆκΉŒ?

$ ttn-lw-cli user get myuser --state 의 좜λ ₯을 보여쀄 수 μžˆμŠ΅λ‹ˆκΉŒ?

사둀 1:

{
  "ids": {
    "user_id": "someadmin"
  },
  "created_at": "2019-08-14T07:20:10.542Z",
  "updated_at": "2019-08-14T07:20:10.542Z",
  "password_updated_at": "0001-01-01T00:00:00Z"
}

사둀 2:

{
  "ids": {
    "user_id": "myuser"
  },
  "created_at": "2019-08-06T10:30:34.091Z",
  "updated_at": "2019-08-06T10:30:34.091Z",
  "password_updated_at": "0001-01-01T00:00:00Z"
}

λ‚΄ 사둀 1 κ΅¬μ„±μœΌλ‘œ env μ„Ήμ…˜μ„ μ—…λ°μ΄νŠΈν•˜κ² μŠ΅λ‹ˆλ‹€. 사둀 2의 경우 λͺ…μ‹œμ μœΌλ‘œ κ΄€λ¦¬μž μŠΉμΈλ„ μ„€μ •ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. ꡬ성 μƒνƒœ κ΄€λ¦¬μž 승인 ν•„μš” = false

3.1.0μ—μ„œ λ¬Έμ œκ°€ μž¬ν˜„λ˜λŠ” 것을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
κ°€λŠ₯ν•œ μˆ˜μ •μ€ λ‹€μŒ μˆ˜λ™ ν™œμ„±ν™” λͺ…령을 μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€: ttn-lw-cli users set norman --state=STATE_APPROVED . μ™œ 이런 일이 μΌμ–΄λ‚˜λŠ”μ§€ 곧 μ‘°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

λ˜ν•œ μœ„μ˜ 좜λ ₯μ—μ„œ β€‹β€‹μƒνƒœκ°€ μ–ΈκΈ‰λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— STATE_REQUESTED λ₯Ό μ˜λ―Έν•˜λŠ” 0μ΄λ―€λ‘œ μ‚¬μš©μžκ°€ μ‹€μ œλ‘œ ν™œμ„±ν™”λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ˜ν•œ 원인을 μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.
https://github.com/TheThingsNetwork/lorawan-stack/blob/55381c15f6902508ea34cd40441ad2bd3146ac37/pkg/identityserver/user_registry.go#L149 -L156
κ΄€λ¦¬μžκ°€ λ§Œλ“  μ‚¬μš©μžλŠ” κ΄€λ¦¬μž 승인 섀정을 λ”°λ₯΄μ§€ μ•ŠμœΌλ©° 항상 μƒνƒœ κΈ°λ³Έκ°’( STATE_REQUESTED )을 κ°€μ§‘λ‹ˆλ‹€. 이것은 @htdvisserλ₯Ό μ˜λ„ν•œ κ²ƒμž…λ‹ˆκΉŒ?

κ΄€λ¦¬μžκ°€ μ‚¬μš©μžλ₯Ό λ§Œλ“  경우 state (및 admin ) ν•„λ“œλŠ” μš”μ²­μ—μ„œ 문자 κ·ΈλŒ€λ‘œ κ°€μ Έμ˜΅λ‹ˆλ‹€. 이것은 κ΄€λ¦¬μžκ°€ λͺ…μ‹œμ μœΌλ‘œ state λ₯Ό REQUESTED 둜 μ„€μ •ν–ˆλŠ”μ§€ μ•„λ‹ˆλ©΄ κ·Έλƒ₯ λ†”λ‘μ—ˆλŠ”μ§€ μ•Œ 수 μ—†κΈ° λ•Œλ¬Έμ— μ˜λ„ν•œ λŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

μ‚¬μš©μžκ°€ κ΄€λ¦¬μžμ— μ˜ν•΄ μƒμ„±λ˜μ§€ μ•Šμ€ 경우 μš°λ¦¬λŠ” κ·Έλ“€μ˜ λͺ©ν‘œκ°€ μŠΉμΈμ„ λ°›λŠ” 것이라고 κ°€μ •ν•˜κ³  아무 것도(κ΄€λ¦¬μž 승인 μš”κ΅¬ 사항) 이λ₯Ό λ°©ν•΄ν•˜μ§€ μ•ŠλŠ” 경우 μžλ™μœΌλ‘œ μŠΉμΈμ„ λ°›μŠ΅λ‹ˆλ‹€. 그듀은 μ²˜μŒλΆ€ν„° 슀슀둜λ₯Ό κ΄€λ¦¬μžλ‘œ λ§Œλ“€ 수 μ—†μŠ΅λ‹ˆλ‹€.

μ›Ή UI의 "create user by admin" κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ state ν•„λ“œκ°€ μ„€μ •λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 것을 더 λͺ…ν™•ν•˜κ²Œ μ•Œ 수 μžˆμ§€λ§Œ REQUESTED 보닀 더 정상적인 기본값을 κ°–λŠ” 것이 쒋은 생각이라고 μƒκ°ν•©λ‹ˆλ‹€. users create APPROVED 의 state ν”Œλž˜κ·Έλ₯Ό 기본으둜 μ„€μ •ν•©λ‹ˆλ‹€.

이전 μ˜κ²¬μ—μ„œ μ„€λͺ…ν•œ κΈ°λŠ₯을 ν¬ν•¨ν•˜λŠ” #1190을 μ‚¬μš©ν•˜λ©΄ 이 문제λ₯Ό 이제 μ’…λ£Œν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰