CLIμμ κ΄λ¦¬ μ¬μ©μλ₯Ό μμ±ν λ μ΄ μ¬μ©μλ μ½μμμ κ²μ΄νΈμ¨μ΄ λ° μ ν리μΌμ΄μ μ μμ±νκ±°λ νΈμ§ν μ μλ μΆ©λΆν κΆνμ΄ μμ μ μμ΅λλ€. λ λ€λ₯Έ κ²½μ°μ μλ‘μ΄ μΌλ° μ¬μ©μλ μ½μμμ μ무κ²λ ν μ μλ κΆνμ΄ μμ΅λλ€. λ²κ·Έμ΄κ±°λ μ¬μ©μλ₯Ό μ¬λ°λ₯΄κ² μμ±νλ λ°©λ²μ λν λ¬Έμκ° λλ½λμμ μ μμ΅λλ€.
νμ€νμ§ μμ΅λλ€. λμΌν μμΈκ³Ό κ΄λ ¨μ΄ μμ μ μλ λ κ°μ§ κ²½μ°μ λλ€. 첫 λ²μ§Έ κ²½μ°μλ λ΄κ° μ€μ νμ§ μμ μμ€ν μμ μμ νκ³ μμΌλ©° νλ‘μΈμ€μ λν μ λ³΄κ° μ νμ μ λλ€.
μ¬λ‘ 1: μΈλΆ μ€ν; μ½μμ μ¬μ©νκΈ° μ μ λ²μ 3.0.0μΌλ‘ μ€μ νκ³ 3.1.0μΌλ‘ μ κ·Έλ μ΄λνμμμ€.
--admin
μ¬μ©μ μμ±(*μ
κ·Έλ μ΄λ μ μ½μ μμ± νλ‘μΈμ€κ° μλͺ»λ urisλ‘ μνλμ΄ λ°μ΄ν°λ² μ΄μ€μμ μ½μ ν΄λΌμ΄μΈνΈλ₯Ό μμ νκ³ is-db
λͺ
λ Ήμ μ¬μ¬μ©νμ΅λλ€. μ΄μ©λ©΄ μ°λ¦¬λ μ¬κΈ°μμ λ§μ³€μ΅λλ€.
μ¬λ‘ 2 : λ΄ μ€μ :
ttn-lw-cli users create norman --name norman --primary-email-address norman@localhost
μμ±λ κ²½μ° λͺ¨λ μΈλΆ μ 보λ₯Ό μ
λ ₯νκ³ 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
λΆννλ λ¬Έμ κ° μ΄λμ μλμ§ μ ν λͺ¨λ¦ λλ€.
μμ μ¬νμ ꡬνν μλ μμ§λ§ μ¬μ©μ μμ± λ° κΆν κ΄λ¦¬μ λν λ¬Έμλ μ 곡ν μ μμ΅λλ€.
@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μ μ¬μ©νλ©΄ μ΄ λ¬Έμ λ₯Ό μ΄μ μ’ λ£ν μ μλ€κ³ μκ°ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
κ΄λ¦¬μκ° μ¬μ©μλ₯Ό λ§λ κ²½μ°
state
(λ°admin
) νλλ μμ²μμ λ¬Έμ κ·Έλλ‘ κ°μ Έμ΅λλ€. μ΄κ²μ κ΄λ¦¬μκ° λͺ μμ μΌλ‘state
λ₯ΌREQUESTED
λ‘ μ€μ νλμ§ μλλ©΄ κ·Έλ₯ λλμλμ§ μ μ μκΈ° λλ¬Έμ μλν λλ‘ μλν©λλ€.μ¬μ©μκ° κ΄λ¦¬μμ μν΄ μμ±λμ§ μμ κ²½μ° μ°λ¦¬λ κ·Έλ€μ λͺ©νκ° μΉμΈμ λ°λ κ²μ΄λΌκ³ κ°μ νκ³ μ무 κ²λ(κ΄λ¦¬μ μΉμΈ μꡬ μ¬ν) μ΄λ₯Ό λ°©ν΄νμ§ μλ κ²½μ° μλμΌλ‘ μΉμΈμ λ°μ΅λλ€. κ·Έλ€μ μ²μλΆν° μ€μ€λ‘λ₯Ό κ΄λ¦¬μλ‘ λ§λ€ μ μμ΅λλ€.
μΉ UIμ "create user by admin" κΈ°λ₯μ μ¬μ©νλ©΄
state
νλκ° μ€μ λμ΄μΌ νλ€λ κ²μ λ λͺ ννκ² μ μ μμ§λ§REQUESTED
λ³΄λ€ λ μ μμ μΈ κΈ°λ³Έκ°μ κ°λ κ²μ΄ μ’μ μκ°μ΄λΌκ³ μκ°ν©λλ€.users create
APPROVED
μstate
νλκ·Έλ₯Ό κΈ°λ³ΈμΌλ‘ μ€μ ν©λλ€.