---
lang: ja
path: cookbook/ios-sdk/recommendation-for-using-name
labels: クックブック/iOS SDK/セキュアな運用のためのnameの指定の推奨について
metaTitle: セキュアな運用のためのnameの指定の推奨について | iOS SDK｜ クックブック ｜ SkyWay（スカイウェイ）
---
# セキュアな運用のためのnameの指定の推奨について

Room リソースや Member リソースは、自動生成される ID とは別に、ユーザーがオプショナルな値として指定できる Name を持っています。SkyWay では、リソースを作成する際に Name の指定を推奨しています。

Room ライブラリによるサンプルコードを以下に示します。

```swift
let opt: Room.InitOptions = .init()
opt.name = "lesson-room-1"

let memberOpt: Room.MemberInitOptions = .init()
memberOpt.name = "alice"

let room = try await P2PRoom.findOrCreate(with: opt)
let localMember = try await room.join(with: memberOpt)
```

各リソースの ID は、リソース作成後に払い出されます。
そのため、リソース作成時に利用する SkyWay Auth Token の `id` にはワイルドカード( `*` )を指定する必要があり、操作する対象のリソースを厳密に制限できません。

一方、各リソースの Name はリソース作成前にユーザー側で決めることができます。そのため、`name` を指定することで操作対象のリソースを厳密に制限した SkyWay Auth Token を作成できます。
以下のようにリソース作成より前に権限の認可条件を指定することで、よりセキュアにアプリケーションを運用できます。

```javascript
// SkyWay Auth Token version 1 または 2 の場合
scope: {
  app: {
    id: "sample-app-id",
    actions: ["read"],
    channels: [
      {
        name: "lesson-room-1",
        actions: ["create", "delete"],
        members: [
          {
            name: "alice",
            actions: ["create", "delete"],
            publication: {
              actions: ["create", "delete"]
            },
            subscription: {
              actions: ["create", "delete"]
            }
          }
        ],
      },
    ]
  }
}
```

```javascript
// SkyWay Auth Token version 3 の場合
scope: {
  appId: "sample-app-id",
  rooms: [
    {
      name: "lesson-room-1",
      methods: ["create", "close", "updateMetadata"],
      member: {
        name: "alice",
        methods: ["publish", "subscribe", "updateMetadata"]
      }
    }
  ]
}
```

## ワイルドカードの利用について

SkyWay Auth Token における Room リソースや Member リソースの name プロパティには、ワイルドカードを利用することができます。

> ワイルドカードを利用する場合には version を 2 以上に設定する必要があります

例えば、student-room-1 や student-room-2 には入ることができるが、teacher-room-1 には入れない、という SkyWay Auth Token を上記の alice のために作成する場合は以下のように作成します。

```javascript
// SkyWay Auth Token version 2 の場合
{
  jti: "aa15ef18-08a4-4755-a9be-9f2d3351465e",
  iat: 1577804400,
  exp: 1577904400,
  version: 2,
  scope: {
    app: {
      id: "sample-app-id",
      actions: ["read"],
      channels: [
        {
          name: "student-room-*", // ワイルドカードを利用
          actions: ["create", "delete"],
          members: [
            {
              name: "alice",
              actions: ["create", "delete"],
              publication: {
                actions: ["create", "delete"]
              },
              subscription: {
                actions: ["create", "delete"]
              }
            }
          ],
        },
      ]
    }
  }
}
```

```javascript
// SkyWay Auth Token version 3 の場合
{
  jti: "aa15ef18-08a4-4755-a9be-9f2d3351465e",
  iat: 1577804400,
  exp: 1577904400,
  version: 3,
  scope: {
    appId: "sample-app-id",
    rooms: [
      {
        name: "student-room-*", // ワイルドカードを利用
        methods: ["create", "close", "updateMetadata"],
        member: {
          name: "alice",
          methods: ["publish", "subscribe", "updateMetadata"]
        }
      }
    ]
  }
}
```
