1

azureアプリクライアントIDとクライアントシークレットを使用してアクセストークンを取得しようとしています。最初は次のPythonコードブロックを試しましたRuby SDK/APIを使用してAzureのアクセストークンを取得します

import adal 
context = adal.AuthenticationContext(AUTHORITY) 
token = context.acquire_token_with_client_credentials(
    "https://management.azure.com/", 
    CLIENT_ID, 
    CLIENT_SECRET) 

これは問題なくトークンを返しています。 私はAzure Ruby SDKを使ってhttps://github.com/Azure/azure-sdk-for-rubyの内容に従って同じことをしようとしていますが、引き続きサンプルを取得することはできません。 私はルビーの初心者ですが、いくつかの体は私とこの経験を共有できますか?

こんにちは、 にここから私のポストにご支援に感謝を追加しました。 は、私はあなたのコードに続くあなたのコードに続き、以下のいずれかのように私のコードを書か

require 'adal' 

TENANT=<TENANT ID> 
CLIENT_ID= <CLIENT_ID> 
CLIENT_SECRET =<CLIENT_SECRET > 
AUTHORITY = "https://login.windows.net" 
auth_ctx = ADAL::AuthenticationContext.new(AUTHORITY, TENANT) 
client_cred = ADAL::ClientCredential.new(CLIENT_ID, CLIENT_SECRET) 
result = auth_ctx.acquire_token_for_client("https://management.azure.com/", client_cred) 
puts result.access_token 

しかし、私は次、 はcheck_host 'のようなエラーを取得しています:Pythonで悪い部品(予想ホスト成分)

それは私のために働いた。

以下は完全なエラートレースです。

F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/2.2.0/uri/generic.rb:593:in `check_host': bad component(expected host component): [https://login.windows.net] (URI::InvalidComponentError) 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/2.2.0/uri/generic.rb:634:in `host=' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/2.2.0/uri/generic.rb:668:in `hostname=' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/2.2.0/uri/generic.rb:187:in `initialize' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/2.2.0/uri/generic.rb:134:in `new' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/2.2.0/uri/generic.rb:134:in `build' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/2.2.0/uri/http.rb:62:in `build' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/gems/2.2.0/gems/adal-1.0.0/lib/adal/authority.rb:95:in `token_endpoint' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/gems/2.2.0/gems/adal-1.0.0/lib/adal/token_request.rb:228:in `oauth_request' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/gems/2.2.0/gems/adal-1.0.0/lib/adal/token_request.rb:182:in `request_no_cache' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/gems/2.2.0/gems/adal-1.0.0/lib/adal/token_request.rb:171:in `request' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/gems/2.2.0/gems/adal-1.0.0/lib/adal/token_request.rb:84:in `get_for_client' 
    from F:/All_Ruby_On_Rails/ruby-2.2.6-x64-mingw32/lib/ruby/gems/2.2.0/gems/adal-1.0.0/lib/adal/authentication_context.rb:78:in `acquire_token_for_client' 
    from F:/Selenium_Workspace_HSBC/dsi/azureadallogin.rb:9:in `<main>' 

AUTHORITY定数に問題があります。誰かがここで手がかりを与えてもらえますか?

+1

ようこそ!質問を2つのもので更新してください:1)あなたが書いたRubyコード(あなたはPythonコードを共有しています)と2)あなたが走っている問題は何ですか? –

答えて

2

Welp、彼はコピー\ペーストです:それ以外の場合は

# Create authentication objects 
token_provider = MsRestAzure::ApplicationTokenProvider.new(tenant_id, client_id, secret) 
credentials = MsRest::TokenCredentials.new(token_provider) 
# Create a client - a point of access to the API and set the subscription id 
client = Azure::ARM::Resources::ResourceManagementClient.new(credentials) 
client.subscription_id = subscription_id 

https://github.com/Azure/azure-sdk-for-ruby/tree/master/management/azure_mgmt_resources

+0

こんにちは、私は試して、働いています。あなたの助けをありがとう。私は、Pythonでユーザー名とパスワードを使用して同じをやろうとしています。方法はそこにありますcontext.acquire_token_with_username_password。 – Soumen

+0

私はRubyの最大の専門家ではありませんが、[this](https://github.com/Azure/azure-sdk-for-ruby/blob/b67599812a9caa654515bbb72a267d67a0890e45/runtime/ms_rest_azure/lib/ms_rest_azure/credentials/)を見ています。 application_token_provider.rb)Rubyではパスワードの許可フローがないようです。 – 4c74356b41

0

、あなたが投稿したコードとしてPython ADALを使用してのようなアクセストークンを取得するためにADAL for Rubyライブラリを使用することができます。

まず、adalからgem install adalをインストールします。その後

  1. フォローadalsample with CLIENT_ID & CLIENT_SECRET方法acquire_token_for_clientを用いて、以下のコードを経由してアクセストークンを取得します。

    require 'adal' 
    AUTHORITY = 'login.windows.net' 
    auth_ctx = ADAL::AuthenticationContext.new(AUTHORITY, TENANT) 
    client_cred = ADAL::ClientCredential.new(CLIENT_ID, CLIENT_SECRET) 
    result = acquire_token_for_client("https://management.azure.com/", client_cred) 
    puts result.access_token 
    
  2. 以下のコードを経由してアクセストークンを取得するにはadalsample with USERNAME & PASSWORDに従ってください。

    require 'adal' 
    AUTHORITY = 'login.windows.net' 
    user_cred = ADAL::UserCredential.new(username, password) 
    ctx = ADAL::AuthenticationContext.new(AUTHORITY_HOST, TENANT) 
    result = ctx.acquire_token_for_user("https://management.azure.com/", CLIENT_ID, user_cred) 
    puts result.access_token 
    

それがお役に立てば幸いです。

+0

私の元の質問が更新されました。 – Soumen

+0

@Soumen 'AUTHORITY'の値は' https:// 'のない 'login.windows.net'です。サンプルコードを更新しました。試してみてください。 –

関連する問題