oneloginをIDPにしてGCPにログイン


#はじめに
oneloginをIDPにしてGCPにログインしてみます。
今回はoneloginのフリートライアルで試してみます。
https://www.onelogin.com/free-trial

設定がない状態でonelogin経由でログインすると以下の様なエラーになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/532cef6b-d9e0-01fe-d4d3-746b74609379.png)

#oneloginでの設定

##Appの設定
Add Appをクリックし、検索ウィンドウでGoogle Cloudと入力して検索する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/ccfb2bc2-d826-421b-91ad-2f32ce930686.png)

SAML2.0の方のGoogle Cloud Platformをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/8995ac5e-c115-16b5-36b0-c9b1a4cb68a6.png)

ConfigurationでCloud Identityのドメインを指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/864e3e9d-14f3-e6c8-8490-1a7d0e48ede6.png)

Assumeを許可して右上のSaveをクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/c8524123-e16f-8ce3-7ca6-adaa14ccba8d.png)

右上のドロップダウンからCloud Identity側で登録するメタデータ情報をダウンロードする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/4e7fc126-d707-1cd7-b41c-e466f6986067.png)

Sample

```
<?xml version="1.0"?>
<EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://app.onelogin.com/saml/metadata/xxx">
  <IDPSSODescriptor xmlns:ds="http://www.w3.org/2000/09/xmldsig#" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
    <KeyDescriptor use="signing">
      <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:X509Data>
          <ds:X509Certificate>xxx</ds:X509Certificate>
        </ds:X509Data>
      </ds:KeyInfo>
    </KeyDescriptor>
    <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://xxx"/>
    
      <NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</NameIDFormat>
    
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="https://xxx"/>
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://xxx"/>
    <SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:SOAP" Location="https://xxx"/>
  </IDPSSODescriptor>
</EntityDescriptor>
```

#Cloud Identityでの設定
https://support.google.com/cloudidentity/answer/6349809?hl=ja

Admin consoleでSecurity >　Set up single sign-on (SSO) with a third party IdPをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/d4721897-c3aa-131e-4d2a-7e1fec5eeada.png)

Set up SSO with third-party identity providerを有効化
Sign-in page URLに、先程のXMLファイルのSingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirectの値を記載する
Sign-out page URLに、指定する先程のXMLファイルのSingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirectの値を記載する
先程のXMLファイルの証明書情報をpemファイルとして保存して、アップロードする。

#テスト
##oneloginでユーザを作成する。
User>New User をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/fcdd0616-5624-5ab8-6426-13a914303622.png)

First nameとLast name、さらにEmailアドレスまたは、Usernameを入力してSave userをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/9a5dc7b3-8621-08be-ef1d-ee546efcbc1a.png)

##Google Cloud Platformを使用するアプリケーションとして追加する。
Applicationをクリックして、右端にある＋マークをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/41f7f650-2cef-53c5-8beb-9dfa9eb97af6.png)

Google Cloud Platformを選択し、Continueをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/a2cbe4d6-f979-aa53-eecd-27de6866bf63.png)

Emailアドレスを入力しSaveをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/280b516d-92ad-ec68-f313-bf4e036643ca.png)

##ログインする
作成したUserにAssume userする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/3bd927a5-b7f0-7f6a-4b31-77a63a44a377.png)

Reasonを入力してAssumeをクリックする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/1c062d0a-9a48-b662-edf2-122a363463e0.png)

Google Cloud Platformのアイコンをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/3d724fe8-2ab1-223d-da4f-e4a678bd98e3.png)

Cloud Identity側にUserが存在しないのでエラーになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/9590c40a-7fa4-0a16-aaa0-3f6e7f49a8ab.png)

以下のYouTubeの動画を見る限り、Provisoning機能があるはずだが、Free trialだからなのか表示されなったので、今回は手動で作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/4793e7b0-e0d9-d33d-112d-4c5c2aa728a8.png)

https://youtu.be/TvM4ydhr14M

以下のようにProvisoningタブが見当たらない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/14912224-03f2-1f39-25f7-79b7ed04cfda.png)

#Cloud Identityでユーザを作成する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/83ec0762-d056-cdbc-6884-c03f3a7b32ef.png)

#GCP ConsoleのIAM画面でAdd memberする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/eaeada3d-c07a-0225-7008-c935cde08ce9.png)

#再度oneloginからログインする。
Continue
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/772e7b27-a7a2-18a5-1823-91b8d913321c.png)

Accept
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/187acb37-7f0e-12be-610b-50b2412edb98.png)

Userがoneloginで指定したUserであることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/351b5af6-9b09-00ef-a403-588187f8f13f.png)


組織を選択して、GCPのリソースが操作できることを確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/78184/c3cf3a7b-71dc-8a48-aaa4-a2d58df03d74.png)