블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함

calendar

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  


[Predix] Understanding Platform Services 3


Using UAAC to Create an OAuth2 Client

UAA Dashboard 대신 UAAC (UAA Command-Line Interface)를 사용하여 OAuth2 클라이언트를 만들 수 있습니다.

UAAC를 사용하여 UAA 인스턴스를 관리 할 수 있습니다. command-line 인터페이스 설치에 대한 자세한 내용은 https://github.com/cloudfoundry/cf-uaac를 참조하십시오.

    1. UAA 인스턴스를 원하는 대상으로 지정하십시오.
    uaac target <uaa_instance_url>
   
    <uaa_instance_url>은 신뢰할 수있는 발급자의 URL입니다 (예 :


https://11fa0273-9e2a-37e2-9d06-2c95a1f4f5ea.predix-uaa.run.aws-usw02-pr.ice.predix.io . UAA 인스턴스를 응용 프로그램에 바인딩 한 후 VCAP_SERVICES 환경 변수에서이 URL을 검색 할 수 있습니다.
   
    2.  administrative client를 사용해 로그인 하세요.
    uaac token client get admin
   
    3. 프롬프트에서 administrative client secret 을 정하세요.
   
    4. 아래 명령어를 사용해서 OAuth2 client 를 생성하세요.
    uaac client add [client_name]
    --authorities "uaa.resource"
    --scope "openid"
    --autoapprove "openid"
    --authorized_grant_types [authorization_code|implicit|password|client_credentials|refresh_token]
    --redirect_uri [redirect_uri_1, redirect_uri_2, ...]
   
    범위 및 authorized_grant_types와 같은 UAA 옵션에 대한 자세한 내용은 https://github.com/GESoftware-CF/uaa/blob/master/docs/UAA-APIs.rst에서 UAA 설명서를 참조하십시오.
   



Updating the OAuth2 Client for Services

OAuth2 클라이언트를 업데이트하여 각 플랫폼 서비스에 특정한 권한 또는 범위를 추가하는 절차.

응용 프로그램이 플랫폼 서비스에 액세스 할 수있게하려면 JSON Web Token (JWT)에 플랫폼 서비스에 필요한 범위가 있어야합니다. 예를 들어 액세스 제어 서비스에 필요한 일부 범위는 acs.policies.read acs.policies.write입니다. 서비스에 필요한 전체 범위 목록은 각 서비스의 관련 섹션을 참조하십시오.

OAuth2 클라이언트는 권한 부여를 사용하여 액세스 토큰을 요청합니다. OAuth2는 4 가지 부여 유형을 정의합니다. 사용한 권한 부여 유형에 따라 필요한 JWT를 생성하도록 OAuth2 클라이언트를 업데이트해야합니다. OAuth2 클라이언트 생성 방법에 대한 자세한 내용은 OAuth2 클라이언트 생성을 참조하십시오.

UAA 인스턴스를 만들면 UAA 인스턴스를 구성 할 수 있도록 admin client가 자동으로 만들어집니다. admin client에는 기본적으로 필요한 권한 및 범위가 지정됩니다.

UAA 대시 보드를 사용하여 추가 클라이언트를 만드는 경우 기본적으로 클라이언트는 client_credentials 부여 유형에 대해 만들어집니다. 또한 필요한 권한과 범위 중 일부가 자동으로 클라이언트에 추가됩니다. 각 서비스에 특정한 권한이나 범위를 추가해야합니다.

또한 admin client에는 기본적으로 사용자 암호를 변경할 수있는 권한이 지정되지 않습니다. 사용자 암호를 업데이트하거나 변경해야하는 경우 uaa.admin 권한을 admin client에 추가해야합니다.

다음 절차는 클라이언트 자격 증명 권한 부여를 사용하는 OAuth2 클라이언트를 업데이트하는 데 필요한 단계를 보여줍니다.

1. Console view에서 서비스가 위치한 공간을 선택하십시오.
2. 서비스 인스턴스 페이지에서 구성해야하는 UAA 인스턴스를 선택하십시오.
3. 서비스 인스턴스 구성 옵션을 선택하십시오.
4. UAA 대시 보드 로그인 페이지에서 관리자 클라이언트 비밀번호를 지정하고 로그인을 클릭하십시오.
5. UAA 대시 보드에서 클라이언트 관리 탭을 선택합니다.
   클라이언트 관리 탭에는 클라이언트 및 서비스 인스턴스의 두 섹션이 있습니다. 서비스 인스턴스 섹션은 서비스에 대해 생성 한 서비스 인스턴스를 표시합니다.

   참고 : 여기에 표시된 서비스 인스턴스는 구성하려는 UAA를 사용하여 만든 인스턴스입니다. 다른 UAA 인스턴스를 사용하여 만든 서비스 인스턴스는이 페이지에 표시되지 않습니다.
  
6. 서비스 인스턴스 섹션에서 클라이언트를 업데이트해야하는 서비스의 + 클라이언트 인증 옵션을 클릭합니다.
7. 목록에서 기존 클라이언트를 선택하거나 새 클라이언트 추가 옵션을 선택하십시오. 새 클라이언트를 추가하기로 선택한 경우 OAuth2 클라이언트 생성의 단계를 따르십시오.
8. Submit을 클릭하십시오.
9. 클라이언트 관리 탭에서 이전 단계에서 추가 한 클라이언트에 해당하는 편집 아이콘을 클릭하십시오.
10. 클라이언트 편집 양식에서 다음 값을 지정하십시오.


Field


Description
Authorized Grant Types Choose one or more of the following grant types:
  • authorization_code

    When you use the authorization code grant type, the client directs the resource owner to UAA, which in turn directs the resource owner back to the client with the authorization code.

  • client_credentials

    When you use the client credentials grant type, the OAuth2 endpoint in UAA accepts the client ID and client secret and provides Access Tokens.

  • password

    When you use the resource owner password credentials grant type, the OAuth2 endpoint in UAA accepts the username and password and provides Access Tokens.

  • refresh_token

    The refresh tokens are credentials used to obtain access tokens. You can choose this option to obtain refresh token from UAA. You can then use the refresh token to obtain a new access token from UAA when the current access token becomes invalid or expires, or to obtain additional access tokens with identical or narrower scope.

  • implicit

    When you use the implicit grant type, UAA directly issues an Access Token to the client without authenticating the client. This reduces the number of round trips required to obtain an access token.

For more information on grant types, see RFC 6749.

Redirect URI Specify a redirect URI to redirect the client after login (for example, http://example-app.com/welcome).

This URI is used when you start using UAA as service provider for your external Identify provider.

Scopes By default, the client is assigned a few required scopes. For a new client, an administrator can select the scopes to be added based on the selected grant type.

If you select the authorization_code, password and implicit grant type, you must update the scopes with service specific scopes.

For a complete list of required scopes, see Authorities or Scopes Required for Platform Services.

For a list of available UAA scopes, see Scopes Authorized by the UAA.

Authorities By default, the client is assigned a few required authorities. For a new client, an administrator can select the authorities to be added based on the selected grant type.

If you select the client_credentials grant type, you must update the authorities with service specific authorities.

For a complete list of scopes to be added for each service, see Authorities or Scopes Required for Platform Services.

For a list of available UAA authorities, see Scopes Authorized by the UAA.

Auto Approved Scopes Specify scopes that can be approved automatically for the client without explicit approval from the resource owner.
Allowed Providers Specify the names of the external identity providers, if any. This field is required if you are using external identity providers with UAA as a service provider.
Access Token Validity Specifies the access token expiration time in ms.
Refresh Token Validity Specifies the refresh token expiration time in ms.

Next Steps:

You can complete the following additional tasks in UAA Dashboard:

  • If you are using authorization grant type as Authorization Code, Implicit, or Resource Owner Password, you can manage users in UAA.
  • You can create password policies for user passwords.
  • You can set up external identity provider or use UAA as an identity provider. See Managing Identity Providers.

If you have completed your OAuth2 client setup, you can bind your application to your service instance.




Authorities or Scopes Required for Platform Services

새 OAuth2 클라이언트를 만들면 클라이언트에 기본 범위와 권한이 할당됩니다. 각 서비스에 특정한 권한이나 범위를 추가해야합니다.

다음 표에는 OAuth2 클라이언트에 추가해야하는 각 플랫폼 서비스에 대한 범위와 권한이 나열되어 있습니다.

Service Name
Authorities/Scopes
Access Control
  • acs.policies.read
  • acs.policies.write
  • acs.attributes.read
  • acs.attributes.write
  • predix-acs.zones.<acs_instance_guid>.user

    This value is added by default if you use the UAA Dashboard. It is also generated in the VCAP_SERVICES environment variable as oauth-scope when you bind your application to your ACS service instance.

Tenant Management
  • tms.tenant.read
  • tms.tenant.write
  • predix-tms.zones.<tms_instance_guid>.user (added by default)
Analytics Catalog analytics.zones.<service_instance_guid>.user (added by default)
Analytics Runtime analytics.zones.<service_instance_guid>.user (added by default)
Asset predix-asset.zones.<service_instance_guid>.user (added by default)
Event Hub
  • Publish
    • predix-event-hub.zones.<Predix-Zone-Id>.user
    • predix-event-hub.zones.<Predix-Zone-Id>.wss.publish
    • predix-event-hub.zones.<Predix-Zone-Id>.grpc.publish
  • Subscribe
    • predix-event-hub.zones.<Predix-Zone-Id>.user
    • predix-event-hub.zones.<Predix-Zone-Id>.grpc.subscribe
Time Series
  • Data ingestion
    • timeseries.zones.<Predix-Zone-Id>.user (added by default)
    • timeseries.zones.<Predix-Zone-Id>.ingest
  • Data queries
    • timeseries.zones.<Predix-Zone-Id>.user (added by default)
    • timeseries.zones.<Predix-Zone-Id>.query
View
  • views.zones.<view_instanceId>.user (added by default)
  • views.admin.user
  • views.power.user

   
Updating the OAuth2 Client Using UAAC

Predix.io의 그래픽 사용자 인터페이스 대신 UAAC를 사용하여 OAuth2 클라이언트를 업데이트하기위한 선택적 절차.

응용 프로그램이 플랫폼 서비스에 액세스 할 수있게하려면 JSON Web Token (JWT)에 플랫폼 서비스에 필요한 범위가 있어야합니다. 예를 들어 액세스 제어 서비스에 필요한 일부 범위는 acs.policies.read acs.policies.write입니다. 서비스에 필요한 전체 범위 목록은 각 서비스의 관련 섹션을 참조하십시오.

OAuth2 클라이언트는 권한 부여를 사용하여 액세스 토큰을 요청합니다. OAuth2는 4 가지 부여 유형을 정의합니다. 사용한 권한 부여 유형에 따라 필요한 JWT를 생성하도록 OAuth2 클라이언트를 업데이트해야합니다. OAuth2 클라이언트 생성 방법에 대한 자세한 내용은 OAuth2 클라이언트 생성을 참조하십시오.






Updating the OAuth2 Client that uses Client Credentials Authorization Grant Types

Before you begin
이 절차에서는 UAAC (UAA Command Line Interface)를 사용합니다. UAAC 설치에 대한 자세한 내용은 https://github.com/cloudfoundry/cf-uaac를 참조하십시오.

다음 절차는 클라이언트 자격 증명 권한 부여를 사용하는 OAuth2 클라이언트를 업데이트하는 데 필요한 단계를 보여줍니다.

Procedure

1. UAA 인스턴스를 원하는 대상으로 지정하십시오.
uaac target <uaa_instance_url>
<uaa_instance_url>은 신뢰할 수있는 발급자의 URL입니다 (예 : https://11fa0273-9e2a-37e2-9d06-2c95a1f4f5ea.predix-uaa.run.aws-usw02-pr.ice.predix.io). UAA 인스턴스를 응용 프로그램에 바인딩 한 후 VCAP_SERVICES 환경 변수에서이 URL을 검색 할 수 있습니다.

2. Administrative client 를 사용해서 UAAC에 로그인 하세요.
uaac token client get admin
프롬프트에  <client_secret> 을 명시하세요.

3. UAA안의 플랫폼 서비스에 대해 필요한 그룹을 생성합니다.
uaac group add <service_scope>

여기서 <service_scope>는 서비스를 위해 만들어야하는 그룹입니다.

Predix 플랫폼 서비스에 필요한 그룹은 다음과 같습니다.


Service Name


Authorities
Access Control
  • acs.policies.read
  • acs.policies.write
  • acs.attributes.read
  • acs.attributes.write
  • predix-acs.zones.<acs_instance_guid>.user
Tenant Management
  • tms.tenant.read
  • tms.tenant.write
  • predix-tms.zones.<tms_instance_guid>.user
Analytics Catalog analytics.zones.<service_instance_guid>.user
Analytics Runtime analytics.zones.<service_instance_guid>.user
Asset predix-asset.zones.<service_instance_guid>.user
Time Series
  • Data ingestion
    • timeseries.zones.<Predix-Zone-Id>.user
    • timeseries.zones.<Predix-Zone-Id>.ingest
  • Data queries
    • timeseries.zones.<Predix-Zone-Id>.user
    • timeseries.zones.<Predix-Zone-Id>.query
View
  • views.zones.<view_instanceId>.user
  • views.admin.user
  • views.power.user


   
4. UAA에 새로운 유저를 생성합니다. 이 유저는 플랫폼 서비스의 administer 입니다.
Note :  이미 해당 유저가 있으면 이 단계는 건너뛰어도 괜찮습니다.
uaac user add <user_name> -p [password] --emails <user_name>@example.com

5. 필요한 scope 들에 멤버십을 할당합니다.
uaac member add <service_scope> <user_name>

콤마로 분리해 여러개의 유저를 명시할 수 있습니다.

6. OAuth2 클라이언트를 플랫폼 서비스에 필요한 범위로 업데이트하십시오.
uaac client update <client_name>
\ --scope <service_scopes>
\ --authorized_grant_types <grant_type>
\ --authorities uaa.resource

<grant_type>은 authorization_code, 암시 적, 암호 및 refresh_token 중 하나 일 수도 있고 조합 일 수도 있습니다. 여러 부여 유형을 쉼표로 구분 된 목록으로 지정할 수 있습니다.

7. administrative user를 사용해서 UAAC에 로그인 합니다.
uaac token owner get <service_client> <service_user>

프롬프트에 <client_secret>을 명시합니다.

8. 토큰에서 범위가 업데이트되었는지 확인하려면 다음 명령을 사용하십시오.
uaac token decode



Connecting Your Application to a Platform Service Instance

작성한 서비스 인스턴스와 응용 프로그램 사이의 통신을 설정하려면 응용 프로그램을 서비스 인스턴스에 바인드하십시오.

Before You Begin

Cloud Foundry에 애플리케이션을 배포하십시오.

응용 프로그램을 서비스 인스턴스에 바인딩하면 Cloud Foundry는 VCAP_SERVICES 환경 변수에 서비스의 연결 정보를 제공합니다. Cloud Foundry 런타임은 환경에 대해 배포 된 응용 프로그램과 통신하기 위해 VCAP_SERVICES 환경 변수를 사용합니다.

VCAP_SERVICES 환경 변수에서 다음 인스턴스 정보를 검색 할 수 있습니다.

    서비스 인스턴스의 instance_uri.
    instance_GUID는 서비스 인스턴스의 zoneID입니다.
    서비스 인스턴스에 액세스하기위한 HTTP 헤더 정보. 그것은 다음을 포함합니다 :
        Predix-Zone-Id로서의 http-header-name
        http-header-value
    인스턴스의 oauth 범위. 최종 사용자 토큰은 범위가 특정 서비스 인스턴스에 액세스해야합니다.

UAA 서비스 인스턴스에 바인딩하는 경우 instance_uri 및 instance_GUID 외에도 다음 정보가 표시됩니다.

    인스턴스에 대한 uaa_instance_issuerId. issuerID는 인증에 UAA 인스턴스를 사용하는 다른 서비스의 인스턴스를 만들 때 필요합니다.






Procedure
1. Cloud Foundry에 로그인 할 때는 Cloud Foundry CLI 를 사용합니다.
cf login -a <API_Endpoint>

<API_Endpoint>의 값은 Predix.io 사용자 계정에 등록 할 때 받게되는 Predix 환영 전자 메일에서 사용할 수 있습니다. Predix.io 등록에 따라 <API_Endpoint> 값은 다음 중 하나입니다.


    Predix US-West

    https://api.system.aws-usw02-pr.ice.predix.io
    Predix US-East

    https://api.system.asv-pr.ice.predix.io
    Predix Japan

    https://api.system.aws-jp01-pr.ice.predix.io
    Predix UK

    https://api.system.dc-uk01-pr.ice.predix.io

For example,

cf login -a https://api.system.aws-usw02-pr.ice.predix.io

이러면 아래와 같은 화면을 보실 겁니다.

Email> <your_predix_login> 
Password> <your_predix_password> 
Authenticating...OK 
Targeted org <your_predix_org> 
Targeted space dev     
API endpoint: https://api.system.aws-usw02-pr.ice.predix.io (API version: <version>)   
User: <your_predix_login> 
Org:  <your_predix_org>  
Space: dev



2. 다음 명령을 입력하여 응용 프로그램을 서비스 인스턴스에 바인드하십시오.
cf bind-service <your_app_name> <service_instance_name>

응용 프로그램이 <service_instance_name> 인스턴스에 바인딩되고 다음 메시지가 반환됩니다.

Binding service <service_instance_name> to app <your_app_name> in org predix-platform / space predix as userx@ge.com...
OK
TIP: Use 'cf restage' to ensure your env variable changes take effect

3. 아래와 같은 명령어를 사용해 binding 을 verify 합니다.
cf env <your_app_name>

응용 프로그램 myApp를 UAA 인스턴스에 바인딩하면 다음 메시지가 반환됩니다.

Getting env variables for app myApp in org predix-platform / space security as userx@ge.com...
OK
...
  ],
  "predix-uaa": [
        {
        "credentials":
        {
         "issuerId":
          "https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io/oauth/token",
         "uri": 
           "https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io",
          "zone": {
                    "http-header-name": "X-Identity-Zone-Id",
                    "http-header-value": "ff27c315-d027-4d1d-a30c-64f49b369ed9"
                   }
        },
        "label":
        "predix-uaa",
        "name":
        "my_uaa_instance",
        "plan":
        "free",
        "tags":
        []
        }
        ],


       
이 예제에서는 아래와 같은 값들이 표시됩니다.


    uaa_instance_issuerId = https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io/oauth/token
    uaa_instance_uri = https://ff27c315-d027-4d1d-a30c-64f49b369ed9.predix-uaa.run.aws-usw02-pr.ice.predix.io
    uaa_instance_GUID = ff27c315-d027-4d1d-a30c-64f49b369ed9

응용 프로그램 myApp를 ACS 서비스 인스턴스에 바인딩하면 다음 메시지가 반환됩니다.

Getting env variables for app myApp in org predix-platform / space security as userx@ge.com...
OK
...
  ],
"predix-acs": [
   {
    "credentials": {
     "uri": "https://predix-acs.run.aws-usw02-pr.ice.predix.io",
     "zone": {
      "http-header-name": "Predix-Zone-Id",
      "http-header-value": "9615a95a-9275-4a82-926d-89f06cbe04e1",
      "oauth-scope": "predix-acs.zones.9615a95a-9275-4a82-926d-89f06cbe04e1.user"
     }
    },
    "label": "predix-acs",
    "name": "acs-sample-instance",
    "plan": "Tiered",
    "provider": null,
    "syslog_drain_url": null,
    "tags": []
   }
  ],
 
  이 예제에서는 아래와 같은 값들이 표시됩니다.
 
 
    acs_instance_uri = https://predix-acs.run.aws-usw02-pr.ice.predix.io
    acs_instance_GUID = 9615a95a-9275-4a82-926d-89f06cbe04e1
    http-header-name = Predix-Zone-Id
    http-header-value = 9615a95a-9275-4a82-926d-89f06cbe04e1
    oauth-scope = predix-acs.zones.9615a95a-9275-4a82-926d-89f06cbe04e1.user

저작자 표시 비영리 동일 조건 변경 허락
신고



Understanding Platform Services 2






Creating a UAA Service Instance

당신은 당신의 공간에 최대 10 개의 UAA 서비스 인스턴스를 생성 할 수 있습니다. 추가 인스턴스가 필요한 경우, 새 인스턴스를 작성하기 전에 먼저 사용되지 않는 이전 인스턴스를 삭제하십시오.

    1. https://www.predix.io에서 Predix 계정에 로그인하십시오.
    2.  Catalog > Services 로 이동 한 다음 User Account and Authentication tile을 클릭하십시오.
    3. 필요한 plan에 가입을 클릭하십시오.
    4. 새 서비스 인스턴스 페이지의 필드를 완료하십시오.
     

Field
Description
Org Select your organization.
Space Select the space for your application.
Service instance name Enter a unique name for this UAA service instance.
Service plan Select a plan.
Admin client secret Enter a client secret (this is the admin password for this UAA instance). The client secret can be any alphanumeric string.
Note: Record the client secret in a secure place for later use.
Subdomain (Optional) Enter a subdomain you might need to use in addition to the domain created for UAA. You must not add special characters in the name of the subdomain. The value of sub-domain is case-insensitive.


    5.       Click Create Service.

Your UAA instance is created with the following specification:

클라이언트 식별자 (admin).
     주 : admin 클라이언트는 부트 스트랩 목적으로 작성됩니다. 응용 프로그램과 함께 사용할 추가 클라이언트를 만들 수 있습니다.

     서비스를 생성하는 동안 지정한 Client Secret.

인스턴스의 추가 세부 사항을 검색하려면 응용 프로그램을 인스턴스에 바인드 할 수 있습니다.







Using the Command Line to Create a UAA Service Instance



그래픽 사용자 인터페이스 대신 명령 줄을 사용하여 UAA 서비스 인스턴스를 만드는 optional 절차.

당신은 당신의 공간에 최대 10 개의 UAA 서비스 인스턴스를 생성 할 수 있습니다. 추가 인스턴스가 필요한 경우 사용하지 않는 이전 인스턴스를 삭제하고 새 인스턴스를 만들어야합니다.

     Cloud Foundry CLI를 사용하여 Cloud Foundry에 로그인하십시오.
     
cf login -a <API_Endpoint>

<API_Endpoint> 값은 Predix.io 사용자 계정에 등록 할 때 받는 Predix 환영 전자 메일에서 사용할 수 있습니다. Predix.io 등록에 따라 <API_Endpoint> 값은 다음 중 하나입니다.


    Predix US-West

    https://api.system.aws-usw02-pr.ice.predix.io
    Predix US-East

    https://api.system.asv-pr.ice.predix.io
    Predix Japan

    https://api.system.aws-jp01-pr.ice.predix.io
    Predix UK

    https://api.system.dc-uk01-pr.ice.predix.io

For example,

cf login -a https://api.system.aws-usw02-pr.ice.predix.io



2. 다음 명령을 입력하여 Cloud Foundry 마켓 플레이스의 서비스를 나열하십시오.

cf marketplace

UAA 서비스 인 predix-uaa가 사용 가능한 서비스 중 하나로 나열됩니다.



3. 다음 명령을 입력하여 UAA 인스턴스를 만듭니다.

cf create-service predix-uaa <plan> <my_uaa_instance> -c '{"adminClientSecret":"<my_secret>","subdomain":"<my_subdomain>"}'



어디에:
        <plan>은 서비스와 관련된 plan입니다. 예를 들어, predix-uaa 서비스에 대해 계층화 된 plan을 사용할 수 있습니다.
        -c 옵션은 다음의 추가 매개 변수를 지정하는 데 사용됩니다.
            adminClientSecret은 client secret을 지정합니다.


            하위 도메인은 UAA 용으로 만든 도메인 외에도 사용할 필요가있는 하위 도메인을 지정합니다. 이것은 optional 매개 변수입니다. 하위 도메인 이름에 특수 문자를 추가하면 안됩니다. 하위 도메인의 값은 대소 문자를 구분하지 않습니다.


    참고 : Cloud Foundry CLI 구문은 Windows와 Linux 운영 체제에 따라 다를 수 있습니다. 운영 체제에 적합한 구문은 Cloud Foundry 도움말을 참조하십시오. 예를 들어, create service 명령에 대한 도움말을 보려면 cf cs를 실행하십시오.

UAA 인스턴스는 다음 사양으로 생성됩니다.

    Client identifier (admin).


    주 : admin client 는 부트 스트랩 목적으로 작성됩니다. 응용 프로그램과 함께 사용할 추가 클라이언트를 만들 수 있습니다.

    서비스를 생성하는 동안 지정한 client secret.

인스턴스의 추가 세부 사항을 검색하려면 응용 프로그램을 인스턴스에 바인드 할 수 있습니다.

cf cs predix-uaa tiered test-1 -c '{"adminClientSecret":"admin","subdomain":"ge-digital"}'

This is how it appears in VCAP SERVICES:

"VCAP_SERVICES": {
"predix-uaa": [
   {
    "credentials": {
     "issuerId": "https://ge-digital.sb-uaa.grc-apps.svc.ice.ge.com/oauth/token",
     "subdomain": "ge-digital",
     "uri": "https://ge-digital.sb-uaa.grc-apps.svc.ice.ge.com",
     "zone": {
      "http-header-name": "X-Identity-Zone-Id",
      "http-header-value": "011d56b9-831e-407d-98d0-da4c1c946862"
     }
    },
    "label": "predix-uaa",
    "name": "test-1",
    "plan": "tiered",
    "provider": null,
    "syslog_drain_url": null,
    "tags": []
   }
  ],
 




 
  Creating a Platform Service Instance
 

플랫폼 서비스 인스턴스를 만들기 전에 신뢰할 수있는 발급자 (UAA)를 설정해야합니다.

신뢰할 수있는 발급자 인스턴스가 준비되면 응용 프로그램 개발을위한 플랫폼 서비스의 인스턴스를 만들 수 있습니다.

     https://www.predix.io에서 Predix 계정에 로그인하십시오.
     카탈로그> 서비스 탭으로 이동하고 서비스 타일을 클릭하십시오.
     필요한 계획에 가입을 클릭하십시오.
     새 서비스 인스턴스의 필드를 완료하십시오.
     
5. Click Create Service.

Creating a Platform Service Instance Using Cloud Foundry Commands

You can use the Cloud Foundry CLI to create a platform service instance.

    1. Use the Cloud Foundry CLI to log into Cloud Foundry.
    cf login -a <API_Endpoint>
   
<API_Endpoint> 값은 Predix.io 사용자 계정에 등록 할 때받는 Predix 환영 전자 메일에서 사용할 수 있습니다. Predix.io 등록에 따라 <API_Endpoint> 값은 다음 중 하나입니다.


    Predix US-West

    https://api.system.aws-usw02-pr.ice.predix.io
    Predix US-East

    https://api.system.asv-pr.ice.predix.io
    Predix Japan

    https://api.system.aws-jp01-pr.ice.predix.io
    Predix UK

    https://api.system.dc-uk01-pr.ice.predix.io

For example,

cf login -a https://api.system.aws-usw02-pr.ice.predix.io

2. 다음 명령을 입력하여 Cloud Foundry 마켓 플레이스의 서비스를 나열하십시오.

cf marketplace

3. 다음 명령을 입력하여 서비스 인스턴스를 만듭니다.
cf create-service <service_name> <plan> <my_instance> -c '{"trustedIssuerIds":["<uaa_instance1_issuerId>", "<uaa_instance2_issuerID>"]}'

어디에:

    <service_name>은 Cloud Foundry 마켓 플레이스의 서비스 이름입니다. 예를 들어 자산 서비스는 프레디 틱 자산입니다.

    <계획>은 서비스와 관련된 계획입니다. 예를 들어, predix-acs 서비스는 기본 계획과 연관 될 수 있습니다.

    <uaa_instance_issuerID>는 https://13fa0384-9e2a-48e2-9d06-2c95a1f4f5ea.predix-uaa.grc-apps.svc.ice.ge.com/oauth/token과 같이 신뢰할 수있는 발급자 (UAA 인스턴스)의 발급자 ID입니다. . 쉼표로 구분 된 목록을 사용하여 여러 신뢰할 수있는 발급자를 지정할 수 있습니다. UAA 인스턴스를 응용 프로그램에 바인딩 한 후 VCAP_SERVICES 환경 변수에서이 URL을 검색 할 수 있습니다.

참고 : Cloud Foundry CLI 구문은 Windows와 Linux 운영 체제에 따라 다를 수 있습니다. 운영 체제에 적합한 구문은 Cloud Foundry 도움말을 참조하십시오. 예를 들어, create service 명령에 대한 도움말을 보려면 cf cs를 실행하십시오.

Cloud Foundry는 서비스 인스턴스가 생성되었음을 확인하는 메시지를 표시합니다. 응용 프로그램에 바인딩 한 후이 인스턴스의 URI를 VCAP_SERVICES 환경 변수에서 검색 할 수 있습니다.



Creating an OAuth2 Client

응용 프로그램이 Predix Platform 서비스에서 작동하도록 특정 권한을 가진 OAuth2 클라이언트를 만들 수 있습니다. 종종 이것은 서비스 인스턴스를 만든 후 첫 번째 단계입니다.

UAA의 인스턴스를 만들면 해당 UAA 인스턴스를 구성하기 위해 UAA 대시 보드를 사용할 수 있습니다. UAA 대시 보드의 클라이언트 관리 탭을 사용하여 OAuth2 클라이언트를 생성 할 수 있습니다.

    Predix.io Console보기에서 서비스가 위치한 공간을 선택하십시오.
    서비스 인스턴스 페이지에서 구성 할 UAA 인스턴스를 선택하십시오.
    서비스 인스턴스 구성 옵션을 선택하십시오.
    UAA 대시 보드 로그인 페이지에서 관리자 클라이언트 비밀번호를 지정하고 로그인을 클릭하십시오.
    UAA 대시 보드에서 클라이언트 관리 탭을 선택합니다.
    클라이언트 관리 탭에는 클라이언트 및 서비스 인스턴스의 두 섹션이 있습니다. 서비스 인스턴스 섹션은 서비스에 대해 생성 한 서비스 인스턴스를 표시합니다.
    참고 : 여기에 표시된 서비스 인스턴스는 구성하려는 UAA를 사용하는 동안 만들어졌습니다. 다른 UAA 인스턴스를 사용하여 만든 서비스 인스턴스는이 페이지에 표시되지 않습니다.
    Create Client를 클릭하여 Create Client 양식을 엽니 다.
    클라이언트 작성 양식을 작성하십시오.
   
Client ID       작성중인 OAuth2 클라이언트의 이름을 지정하십시오.
Authorized Grant Types    다음 Grany Type 중 하나 이상을 선택하십시오 :

    authorization_code

    인증 코드 부여 유형을 사용하면 클라이언트는 리소스 소유자를 UAA로 지정하고 UAA는 인증 코드를 사용하여 리소스 소유자를 다시 클라이언트로 보냅니다.
    client_credentials

    클라이언트 자격 증명 부여 유형을 사용하면 UAA의 OAuth2 끝점에서 클라이언트 ID와 클라이언트 암호를 받아들이고 액세스 토큰을 제공합니다.
    암호

    리소스 소유자 암호 자격 증명 부여 유형을 사용하면 UAA의 OAuth2 끝점에서 사용자 이름과 암호를 받아들이고 액세스 토큰을 제공합니다.
    refresh_token

    새로 고침 토큰은 액세스 토큰을 얻는 데 사용되는 자격 증명입니다. 이 옵션을 선택하여 UAA에서 새로 고침 토큰을 얻을 수 있습니다. 그런 다음 새로 고침 토큰을 사용하여 현재 액세스 토큰이 유효하지 않거나 만료되었을 때 UAA에서 새 액세스 토큰을 얻거나 범위가 같거나 좁은 추가 액세스 토큰을 얻을 수 있습니다. 
   
Client Secret     암호를 지정하십시오. 이 암호를 기록해 두는 것이 중요합니다. 손실 된 경우이 암호를 검색 할 수 없습니다.

Confirm Client Secret     Reenter the client secret.
Redirect URI        로그인 후 클라이언트를 리디렉션 할 리디렉션 URI를 지정하십시오 (예 : http://example-app.com/welcome).

UAA를 외부 Identify 공급자의 서비스 공급자로 사용하기 시작할 때이 URI를 사용하십시오.

Scopes    범위는 OAuth 클라이언트와 관련된 권한으로 애플리케이션을 통해 리소스에 대한 사용자 액세스를 결정합니다. 사용자 권한은 권한 부여 유형 authorization_code, 암호 및 암시 적입니다.

기본적으로 관리 클라이언트에는 필요한 모든 범위가 지정됩니다. 새 클라이언트의 경우 관리자는 클라이언트 요구 사항에 따라 추가 할 범위를 선택할 수 있습니다.

사용 가능한 범위 목록은 UAA에서 승인 한 범위를 참조하십시오.

Predix Platform 서비스 인스턴스에 OAuth2 클라이언트를 사용하려면 서비스 인스턴스에 클라이언트를 추가 한 후 각 서비스에 특정한 범위를 추가하도록 OAuth2 클라이언트를 업데이트해야합니다.

Authorities       권한은 사용자 개입없이 자체 자격 증명으로 리소스에 액세스하기 위해 애플리케이션 또는 API가 자체적으로 행동 할 때 OAuth 클라이언트와 관련된 권한입니다. 권한은 client_credentials 권한 부여 유형에 대한 것입니다.

기본적으로, 관리 클라이언트에는 모든 필수 권한이 지정됩니다. 새 클라이언트의 경우, 관리자는 클라이언트 요구 사항에 따라 추가 할 권한을 선택할 수 있습니다.

권한 목록은 범위 목록과 일치합니다. 사용 가능한 UAA 범위 목록은 UAA에서 승인 한 범위를 참조하십시오.

Predix Platform 서비스 인스턴스에 OAuth2 클라이언트를 사용하려면 OAuth2 클라이언트를 업데이트하여 클라이언트를 서비스 인스턴스에 추가 한 후 각 서비스에 특정한 권한을 추가해야합니다.
노트:

관리 클라이언트에는 사용자 암호를 변경할 수있는 기본 권한이 할당되지 않습니다. 사용자 암호를 변경하려면 admin 클라이언트에 uaa.admin 권한을 추가해야합니다.

Auto Approved Scopes     리소스 소유자의 명시적인 승인없이 클라이언트에 대해 자동으로 승인 될 수있는 범위를 지정합니다.

Allowed Providers        외부 아이디 공급자의 이름을 지정합니다. 이 필드는 UAA와 함께 외부 ID 공급자를 서비스 공급자로 사용하는 경우 필요합니다.

Access Token Validity    액세스 토큰 만료 시간을 ms 단위로 지정합니다.

Refresh Token Validity     새로 고침 토큰 만료 시간 (밀리 초)을 지정합니다.

저작자 표시 비영리 동일 조건 변경 허락
신고


Understanding Platform Services



Predix 플랫폼은 Predix Catalog를 통해 사전 구축 된 Microservices를 제공합니다. 마이크로 서비스는 Cloud Foundry marketplace에서 프로비저닝됩니다. 응용 프로그램 요구 사항에 따라 사용할 마이크로 서비스를 선택할 수 있습니다. Predix 플랫폼에서 제공되는 마이크로 서비스의 전체 목록은 Predix.io의 카탈로그 페이지를 참조하십시오.

Predix 플랫폼 서비스는 인증을 위해 OAuth2를 사용합니다. 이 서비스는 UAA (User Account and Authentication) 웹 서비스를 활용하여 OAuth2 클라이언트를 관리합니다.

사용자 계정 및 인증 (UAA)은 Cloud Foundry가 사용자 및 OAuth2 클라이언트를 관리하기 위해 제공하는 웹 서비스입니다. 주요 역할은 OAuth2 공급자로서 Cloud Foundry 사용자를 대신하여 클라이언트 응용 프로그램이 작동 할 때 사용할 토큰을 발급하는 것입니다. 로그인 서버와 공동으로 Cloud Foundry 자격 증명으로 사용자를 인증하고 해당 자격 증명 (또는 기타)을 사용하여 SSO 서비스로 작동 할 수 있습니다. 이 서비스는 사용자 계정을 관리하고 OAuth2 클라이언트를 등록하기위한 endpoint를 제공합니다.

플랫폼 서비스를 사용하려면 먼저 신뢰할 수있는 발급자로 UAA 서비스의 인스턴스를 설정해야합니다. 그런 다음 서비스에 대한 모든 액세스는 지정된 신뢰할 수있는 발급자를 사용하여 인증됩니다.

다음 다이어그램은 인증을 위해 플랫폼 서비스가 UAA와 통합되는 방법을 보여줍니다.







Setting Up UAA and Platform Services




다음 작업 로드맵은 Predix 플랫폼 서비스를 시작하는 데 필요한 기본 단계를 보여줍니다.


Task Roadmap


 Task

Description

 1

 trusted issuer를 설정하십시오. 

 사용자 계정 및 인증 (UAA) 서비스의 인스턴스를 만듭니다. UAA는 각 플랫폼 서비스가 인증에 사용하는 권한 부여 서버입니다.
자세한 내용은 Creating a UAA Service Instance를 참조하십시오


팁 : 여러분의 작업공간에 만들 수있는 UAA 인스턴스의 최대 수는 10 개입니다. 가장 좋은 방법은 각 서비스와 동일한 UAA 인스턴스를 사용하는겁니다.

 2

 서비스의 인스턴스를 만듭니다

 Predix.io 카탈로그에서 필요한 서비스를 선택하고 서비스의 인스턴스를 만듭니다.
자세한 내용은 Creating a Platform Service Instance를 참조하십시오.

 3

 UAA를 사용하여 인증 된 서비스에 대한 액세스를 설정하기 위해 OAuth2 클라이언트를 만듭니다

 UAA 인스턴스를 만들면 추가 구성을 위해 UAA에 액세스 할 수 있도록 관리 클라이언트가 자동으로 만들어집니다. 특정 범위의 서비스 인스턴스에 대해 새 클라이언트를 만들 수 있습니다. Oauth2 클라이언트가 이미있는 경우 클라이언트를 업데이트하여 서비스 인스턴스를 추가 할 수 있습니다.
자세한 내용은  Creating an OAuth2 Client를 참조하십시오.

 4

 Oath2 클라이언트를 업데이트하여 특정 서비스 범위 또는 권한을 추가하십시오.

 응용 프로그램이 플랫폼 서비스에 액세스 할 수있게하려면 JSON Web Token (JWT)에 플랫폼 서비스에 필요한 범위가 있어야합니다.
자세한 내용은  Updating the OAuth2 Client를 참조하십시오.

 5

 응용 프로그램을 서비스 인스턴스에 바인딩하십시오

 응용 프로그램과 플랫폼 서비스 간의 통신을 설정하려면 응용 프로그램을 서비스에 바인딩해야합니다.
자세한 내용은  Connecting Your Application to a Platform Service Instance.을 참조하십시오.

 6

 이제 서비스를 사용합니다

 Predix.io에 로그인하면 서비스 인스턴스가 콘솔 페이지에 나열됩니다.
특정 서비스 인스턴스 사용에 대한 자세한 내용은 Predix.io의 각 서비스 정보 페이지에서 설명서보기 버튼을 사용하십시오.

 









Setting Up Platform Services Using Cloud Foundry Commands



이는 Predix.io에서 제공하는 그래픽 사용자 인터페이스 대신 Cloud Foundry 명령 줄을 사용하여 플랫폼 서비스를 시작하는 선택적 절차입니다.

다음 선택적 절차는 Cloud Foundry 명령 줄 도구를 사용하여 Predix 플랫폼 서비스를 시작하는 데 필요한 기본 단계를 보여줍니다. 그래픽 사용자 인터페이스 사용에 대한 자세한 내용은 Setting Up UAA and Platform Services을 참조하십시오.

1. 신뢰할 수있는 발급자가 될 사용자 계정 및 인증 서비스의 인스턴스를 만듭니다.  Using the Command Line to Create a UAA Service Instance를 참조하십시오.


2. 애플리케이션을 아직 배포하지 않은 경우 애플리케이션을 Cloud Foundry로 푸시합니다.
Creating a Simple Predix Hello World Web App를 참조하십시오.


3. 응용 프로그램을 UAA 인스턴스에 바인딩하십시오. 응용 프로그램을 UAA 인스턴스에 바인딩하면 UAA 서비스 인스턴스의 연결 세부 정보가 VCAP_SERVICES 환경 변수에 채워집니다.


4. VCAP_SERVICES 환경 변수 세부 정보에서 UAA 인스턴스 issuerID를 검색하십시오.
issuerID는 인증에 UAA 인스턴스를 사용하는 다른 서비스의 인스턴스를 만들 때 필요합니다.


5. 서비스 인스턴스를 사용하고 생성하는 데 필요한 Predix 플랫폼 서비스를 선택하십시오.  Creating a Platform Service Instance Using Cloud Foundry Commands를 참조하십시오.
플랫폼 서비스의 인스턴스를 만들 때는 신뢰할 수있는 발급자 (UAA 인스턴스의 발급자 ID) 또는 신뢰할 수있는 발급자 집합을 지정해야합니다.


6. 응용 프로그램을 새 서비스 인스턴스에 바인딩하십시오.
서비스 인스턴스를 응용 프로그램에 바인딩하면 서비스 인스턴스의 연결 세부 정보가 VCAP_SERVICES 환경 변수에 채워집니다. VCAP_SERVICES 환경 변수 세부 정보에서 다음 정보를 검색 할 수 있습니다.


* http-header-name 및 http-header-value

HTTP 헤더 정보는 서비스 인스턴스에 대한 각 호출에 필요합니다. 인스턴스 호출은 헤더에 http-header-name 및 http-header-value를 포함해야합니다.

* oauth-scope

oauth-scope 값은 특정 서비스 인스턴스에 액세스하기 위해 OAuth2 클라이언트에 추가해야하는 권한을 나타냅니다. OAuth2 클라이언트 업데이트의 예는 UAAC를 사용하여 OAuth2 클라이언트 업데이트를 참조하십시오.

7. Oauth2 클라이언트를 만듭니다.  Using UAAC to Create an OAuth2 Client.를 참조하십시오.


8. 플랫폼 서비스를 사용하도록 Oauth2 클라이언트를 업데이트하십시오.



저작자 표시 비영리 동일 조건 변경 허락
신고


Learning Predix: Getting Started




What you need to do


* Understand Predix

Catalog Services : 어플리케이션에서 building block 처럼 사용할 수 있다. 기본 기능들을 다시 개발하는데 시간을 소비할 필요가 없다.
Postgres, Redis cache, Blobstore, and Rabbit MQ 같은 서비스들은 어플리케이션을 만들때 기본적으로 필요한 것들이다.
Predix Timeseries, Predix Asset, Predix Analytics, Predix Machine and Predix Edge Manager 같은 다른 서비스들은 IIOT use-case를 해결하는 진정한 Industrial Internet applications 인 것을 느끼게 해 줄 것이다.

Predix는  monetize analytics, services, and applications 도 가능하도록 한다. 어플리케이션을 만들어서 고객에게 다시 되 팔 수도 있다.
또는 Building block Service 들을 만들거나 building block Analytics 를 만들어서 다른 사람들의 어플리케이션에서 사용되도록 만들 수 있다.



* Getting Started

Predix account를 가지게 되면 많은 getting started resources들을 볼 수 있을 것이다.
우선 Predix가 무엇이고 어떻게 Industrial Internet에서 유익하게 사용될 수 있는지 부터 파악해야 한다.



* Catalog Services

이제 Industrial Internet applications를 생성하기 위해 어떤 building block service들이 가능한지 느껴볼 시간이다.
Predix Catalog로 가서 다양한 category들얼 알아보라.






* Tools to get you going

랩탑과 환경을 셋업하거나 서비스들을 configuring 하는데 좀 시간이 걸릴 것이다. 다음을 따르면 좋다.

- DevBox : 미리 configure 된 virtual machine. 모든 샘플 앱들과 tutorial들이 DevBox에 디자인되고 build 돼 있다.  Trainings, Demos, Workshops and Sales calls 등에 활용되면 좋을 것이다. Linux base 라서 Predix Cloud envitonment 의 Production 과 유사하다.
- Install Tools : modern Front-End, Back-End and Edge developers 들에게는 Industrial strength cloud applications를 build 하기 위해 좋은 tool들이 필요하다.



* View Sample Applicatoins

여러분의 어플리케이션은 어떤 모양일까? 그리고 어떻게 디자인 될까? 여기 샘플 어플리케이션에서 체크해 볼 수 있다.




* Build Industrial Apps

이제 여러분의 어플리케이션을 생성할 준비가 다 됐다.

    Build a Basic App - Learn by doing it yourself.  You'll know how to build Predix apps by the end of this journey.
    Edge Starter - Send sensor data from the Edge using a Predix Machine and Predix Times Series service.
    Dashboard Seed - Build great looking and performing applications using the Predix Dashboard Seed.
    RMD Reference App - The RMD Reference App is a super-set of all the other pieces.  It uses the Hello World microservice templates, the Predix Machine adapters in Edge Starter, and the Dashboard Seed for it’s UI.  And it also has an Analytics architecture for writing, configuring and triggering Analytics.
    RMD Analytics App – Run Analytics in the cloud, the pieces are all there that you manually download.  A tutorial and script to install are coming soon. 

기초에 대해 공부를 하게되면 -microservices architecture with both front end and back end- 많은 사람들이  integrating Predix services 를 위해 RMD Reference App 을 살펴보게 된다.
install script로 전체 어플리케이션을 다운받고 여러분의 Predix Cloud space에 deploy 할 수 있다.



* Tools you'll use every day

어플리케이션을 생성하고 production 에서 관리하는 데에는  여러 tool 들이 필요하다. 이를 위한 많은 툴들이 있고 지금도 매일 새로운 툴들이 나오고 있다.
    Predix Console - configure your Predix Cloud org, space, apps, services and users.
    Predix Tool Kit - set up your Security and learn the Predix APIs using this helpful utility
    Predix CLI Plugin - makes logging-in to the cloud much easier
    Machine Simulator - simulate sensor data using this basic microservice while you are developing your application



* Training and Boot Camps

좀 더 깊게 들어가고 싶거나 expert에게 좀 더 좋은 정보를 얻고 싶으면  Predix Training site로 가라. 여기서 무료 온라인 트레이닝 코스들을 찾을 수 있을 것이다.
그리고 Predix Bootcamp는 유료 training 을 제공하고 있다.



* Sample Code


이제 여러분의 business usecase에 여러 샘플들이나 widget들을 integrate 하고 싶을 것이다. 샘플 코드를 볼 수 있는 곳들이 있다.

    GitHub PredixDev -  all the tutorial content, SDKs, templates, microservices and widgets are out here.  And you can use them in your own apps.
    GitHub Predix - open source projects moderated by the Predix team.  Explore and contribute back to the community.
    Code Sharing -  look for code contributed by your peers as well as announcements from the Predix team.  Be sure to review your forum profile to subscribe for email notifications in the preferences.



* Get answers, ask questions, and stay informed

질문이 있으면 이곳에서 도움을 받을 수 있다.




* What you learned
Predix developer가 되기 위해 어디에서 tool들과 tip들을 찾을 수 있는지를 알게 됐다. 이제 Industrial Internet을 code 할 수 있게 됐다.

저작자 표시 비영리 동일 조건 변경 허락
신고
이전 1 다음

티스토리 툴바